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

标签 vb.net multithreading events delegates

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

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

相关文章:

c# - WCF- "The request for security token could not be satisfied because authentication failed"

vb.net - 如何在VB.NET中直接填充Dictionary(Of TKey, TValue)

java - 使用 Java 编程安全/常规/原子寄存器

java - 每次执行函数时都会完全更新 JTable 数据

vb.net - 如何使用 VB.NET 对字典的键进行反向排序?

c# - C# 比 VB.NET 快吗?

当某些线程创建 Webdriver 时 Python Selenium 失败

java - 是下面的静态实用方法 Threadsafe

Javascript - DOMSubtreeModified 事件未针对我在 Firefox 中的内容触发!

events - Ignite事件监听器注册错误