Red*_*der 4 vb.net multithreading delegates
我的代码中有这个方法:
Private Sub Display()
Received.AppendText(" - " & RXArray)
End Sub
Run Code Online (Sandbox Code Playgroud)
这2个电话之间有什么区别:
Me.Invoke(New MethodInvoker(AddressOf Display))
Run Code Online (Sandbox Code Playgroud)
和
Display()
Run Code Online (Sandbox Code Playgroud)
我知道这是关于线程的事情,但我不确定.
提前致谢
Invoke当你在不同的线程中工作时使用方式.例如,如果调用者与GUI不在同一个线程中.
如果调用者不需要等待方法的结果,您甚至可以使用BeginInvoke:
GuiObject.BeginInvoke(New MethodInvoker(AddressOf Display))
Run Code Online (Sandbox Code Playgroud)
或更短:
GuiObject.BeginInvoke(Sub() Display)
Run Code Online (Sandbox Code Playgroud)
为了更容易编写,您可以将调用移动到Display函数中:
Private Sub Display()
If Me.InvokeRequired Then
Me.Invoke(Sub() Display)
Return
End IF
Received.AppendText(" - " & RXArray)
End Sub
Run Code Online (Sandbox Code Playgroud)
这样调用者不必知道他是否在同一个线程中.
小智 5
在另一个答案中添加参数:
Private Sub Display(ByVal strParam As String)
If Me.InvokeRequired Then
Me.Invoke(Sub() Display(strParam))
Return
End IF
Received.AppendText(" - " & RXArray)
End Sub
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
25652 次 |
| 最近记录: |