是否异步处理事件处理程序?

时间:2009-06-16 00:54:34

标签: vb.net events asynchronous event-handling

在VB .NET中,当您调用RaiseEvent X()时,是处理异步或同步处理的事件X的函数。我的印象是RaiseEvent和事件的处理是同步的,除非在另一个线程上明确地创建。不过我已经被告知了。

2 个答案:

答案 0 :(得分:6)

默认情况下会同步引发事件。由于MulticastDelegates旨在支持异步调用,因此可以异步调用事件的调用列表中的委托,但这不是默认行为。

答案 1 :(得分:2)

我刚做了一些测试......

Public Sub MyHandler() Handles Complete
    MsgBox("My Handler - Beginning 5 second sleep")
    Threading.Thread.Sleep(5000)
    MsgBox("My Handler - Awoken")
End Sub


Public Sub SomeFunction()
    MsgBox("Some function - Raising Event")
    RaiseEvent Complete()
    MsgBox("Some function - After Event")
End Sub

输出:
     一些功能 - 提升事件
     我的处理程序 - 开始5秒睡眠
     我的处理程序 - 唤醒
     一些功能 - 事件后

相关问题