Самый простой ответ: «просто вызвать событие в текущем потоке». Форма должна обрабатывать события, а затем выполнять любые обновления потока формы, используя Control.Invoke
.
Вот рекомендуемый способ обновления Label
элемента управления __message
из другого потока.
Добавьте следующий код в форму .
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
Затем позвоните форму .SetText(<messageToDisplay>)
, где это необходимо.
Вы можете использовать методы Control.Invoke
или Control.BeginInvoke
. См. Control.InvokeRequired
Свойство для получения дополнительной информации.