gpt4 book ai didi

vb.net - 在 VB.NET 的新线程上引发事件

转载 作者:行者123 更新时间:2023-12-04 23:28:06 26 4
gpt4 key购买 nike

我需要从新线程上的表单中引发事件。

(我不认为这样做的原因是相关的,但以防万一:我将从表单的 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com