【发布时间】:2013-07-18 07:52:15
【问题描述】:
我的代码中有这个方法:
Private Sub Display()
Received.AppendText(" - " & RXArray)
End Sub
这两个调用有什么区别:
Me.Invoke(New MethodInvoker(AddressOf Display))
与
Display()
我知道这是关于线程的,但我不确定。
提前致谢
【问题讨论】:
-
不同之处在于 Invoke() 大大增加了您的程序因死锁而挂起的几率。始终使用 BeginInvoke() 代替。 SerialPort 类尤其麻烦,您必须 在 DataReceived 事件处理程序中使用 BeginInvoke 类,因为它在工作线程上运行,因此无法直接更新控件。调用 SerialPort.Close() 方法时,使用 Invoke() 会导致死锁。
标签: vb.net multithreading delegates