我需要从新线程上的表单中引发事件。
(我不认为这样做的原因是相关的,但以防万一:我将从表单的 WndProc 子中的代码引发事件。如果处理事件的代码在表单上使用某些东西阻塞 [例如 msgbox] )
这就是我目前正在做的事情:
Public Event MyEvent()
Public Sub RaiseMyEvent()
RaiseEvent MyEvent
End Sub
Protected Overrides Sub WndProc(ByRef m As System.Windows.Forms.Message)
Dim t As New Threading.Thread(AddressOf RaiseMyEvent)
t.Start()
End Sub
有没有更好的办法?
据我了解,VB 中的事件实际上是由后台的委托(delegate)组成的。有没有办法在新线程中引发事件而不为每个线程创建子?或者,我应该使用更合适的方法吗?
最佳答案
您可以像这样消除 RaiseMyEvent 子:
Public Class Class1
Public Event MyEvent()
Sub Demo()
Dim t As New Threading.Thread(Sub() RaiseEvent MyEvent())
t.Start()
End Sub
End Class
关于vb.net - 在 VB.NET 的新线程上引发事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9255499/