如何在VB.NET的新线程中触发特定事件?
- 内容介绍
- 文章标签
- 相关推荐
本文共计340个文字,预计阅读时间需要2分钟。
我需要在新的线程上从表中引发一个事件。(我不确定这个原因是否相关,但为了以下情况:我将从表的单个WndProc子中引发事件。如果处理事件的代码阻塞了表上的某些内容[例如],则...)
我需要在新线程上从表单中引发一个事件.(我不相信这个的原因是相关的,但为了以下情况:我将从表单的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中的事件实际上是由代表在后台组成的.有没有办法在新线程中引发事件而不为每个线程创建子线程?或者,我应该使用更合适的方法吗?
你可以像这样消除RaiseMyEvent子:Public Class Class1 Public Event MyEvent() Sub Demo() Dim t As New Threading.Thread(Sub() RaiseEvent MyEvent()) t.Start() End Sub End Class
本文共计340个文字,预计阅读时间需要2分钟。
我需要在新的线程上从表中引发一个事件。(我不确定这个原因是否相关,但为了以下情况:我将从表的单个WndProc子中引发事件。如果处理事件的代码阻塞了表上的某些内容[例如],则...)
我需要在新线程上从表单中引发一个事件.(我不相信这个的原因是相关的,但为了以下情况:我将从表单的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中的事件实际上是由代表在后台组成的.有没有办法在新线程中引发事件而不为每个线程创建子线程?或者,我应该使用更合适的方法吗?
你可以像这样消除RaiseMyEvent子:Public Class Class1 Public Event MyEvent() Sub Demo() Dim t As New Threading.Thread(Sub() RaiseEvent MyEvent()) t.Start() End Sub End Class

