这是一个简单的例子。它可能比其他一些语言更难一些,但它仍然不是非常复杂。以下代码假定它在表单类中(如果不是,您需要使用一些控件或表单引用来调用Invoke
):
Private Sub beginDoWork()
Dim thread As New Thread(AddressOf DoWork)
thread.Start()
End Sub
Public Sub DoWork()
Dim result As String = getStringFromRemoteServer()
workCompleted(result)
End Sub
Private Delegate Sub workCompletedDelegate(result As String)
Private Sub workCompleted(result As String)
If InvokeRequired Then
Invoke(New workCompletedDelegate(AddressOf workCompleted(result)
Exit Sub
End If
Label1.Text = result
End Sub
这可以通过DoWork
始终调用Invoke
调用workCompleted
而不是workCompleted
检查是否需要调用来进一步简化,但是如果您打算在 UI 线程上而不是一个工作线程。