加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

在VB.NET中的新线程上引发事件

发布时间:2020-12-17 07:17:10 所属栏目:百科 来源:网络整理
导读:我需要在新线程上从表单中引发一个事件. (我不相信这个的原因是相关的,但为了以下情况:我将从表单的WndProc子中的代码中引发事件.如果处理事件的代码阻塞了表单上的某些内容[例如msgbox]然后在断开连接的上下文中发生各种各样的麻烦.我已经确认在解决问题的
我需要在新线程上从表单中引发一个事件.

(我不相信这个的原因是相关的,但为了以下情况:我将从表单的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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读