Jim*_*Jim 1 vb.net visual-studio-2005
在多线程类中引发事件?
我正在运行一个类(游戏手柄处理程序),它使用许多子线程来检查键输入等,然后它将事件引发到我的表单以解决所需的反应,是否有办法使事件在同一个线程上引发班级本身.
最简单的答案是"只是在当前线程上引发事件".由表单处理事件然后使用表单的线程执行任何更新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
Run Code Online (Sandbox Code Playgroud)
然后调用形式.SetText(<messageToDisplay>)
在需要的地方.
您可以使用Control.Invoke
或Control.BeginInvoke
方法.有关Control.InvokeRequired
更多信息,请参阅财产