multithread method invoke

M

m.posseth

Hello

does someone know how i can invoke a method in the underlying thread without
the usage of a window handle ??


This works perfect in a form

Me.Invoke(New MethodInvoker(AddressOf ShowRecvdMessage))



however in a control i receive the folowing error

"Cannot call Invoke or InvokeAsync on a control until the window handle has
been created."







the complete routine that runs on a background thread:

Private Sub Listener()

done = False

Try

While Not done

Dim iPEndPoint As IPEndPoint = Nothing

Dim bs As Byte() = client.Receive(iPEndPoint)

Dim m As IMessage = NHS.Messaging.Util.RetrieveMessage(bs)

If Not m Is Nothing Then 'Return

message = m.MessageText

' need to use Invoke or BeginInvoke Syntax as message is on different
thread--

Me.Invoke(New MethodInvoker(AddressOf ShowRecvdMessage))

End If

End While

Catch e As Exception

multicastException(e)

End Try

End Sub
 
R

rawCoder

Just a trick, see if it works,

try doing dim nHandle as integer = Me.Handle
before the invoke line

HTH
rawCoder
 
M

m.posseth

Well ,,,, after a slight conversion :)
Dim nHandle As IntPtr = Me.Handle

This seems to work ( the error isn`t raised annymore , now see if it is
receiving data )

The problem is solved however i am still curious why it occured :)

Private Sub Listener()

done = False

Try

While Not done

Dim iPEndPoint As IPEndPoint = Nothing

Dim bs As Byte() = client.Receive(iPEndPoint)

Dim m As IMessage = NHS.Messaging.Util.RetrieveMessage(bs)

If Not m Is Nothing Then Return

message = m.MessageText

Dim nHandle As IntPtr = Me.Handle

' need to use Invoke or BeginInvoke Syntax as message is on different
thread--

Me.Invoke(New MethodInvoker(AddressOf ShowRecvdMessage))

End While

Catch e As Exception

multicastException(e)

End Try

End Sub

Thanks for helping me out

Regards

Michel Posseth
 
R

rawCoder

I read this solution some times ago on the newsgroup and was in the back of
my mind, but I forgot the datatype catch.
Well I think someone said that this line forces the handle to be created.
If this is THE window handle, then its very strange.
Some one has recommended to call the CreateHandle/CreateControl method as
well.

HTH
rawCoder
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top