2009-06-16 89 views
5

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

回答

6

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

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秒睡眠
我的处理程序 - 到觉醒
一些功能 - 后事件