【发布时间】:2012-02-13 04:10:49
【问题描述】:
我需要在新线程上的表单中引发事件。
(我不认为这样做的原因是相关的,但以防万一:我将从表单的 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 中的事件实际上是由后台的委托组成的。有没有办法在新线程中引发事件而不为每个线程创建子?或者,我应该使用更合适的方法吗?
【问题讨论】:
-
为什么需要在新线程上引发事件?
-
@Matt,阅读我的帖子,第一段斜体。我需要在 WndProc 中引发事件。如果处理这些事件的代码需要 WndProc 消息才能工作,则会发生崩溃,因为 WndProc 被阻塞。
标签: vb.net multithreading events delegates