2009-06-16 139 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秒睡眠
我的處理程序 - 到覺醒
一些功能 - 後事件