The simpliest answer is, "just raise the event on the current thread." It is up to the form to handle the events then perform any updates on the form's thread using Control.Invoke
.
Here is the recommended way to update a Label
control called __message
from another thread.
Add the following code to the form.
Delegate Sub SetTextDelegate(ByVal message As String)
Public Sub SetText(ByVal message As String)
If __message.InvokeRequired Then
Dim oCall As New SetTextDelegate(AddressOf SetText)
Me.Invoke(oCall, New Object() {message})
Else
__message.Text = message
End If
End Sub
Then call form.SetText(<messageToDisplay>)
where needed.
You can either use the Control.Invoke
or Control.BeginInvoke
methods. See Control.InvokeRequired
Property for more information.