2009-06-16 25 views
5

In VB .NET, wenn Sie RaiseEvent X() aufrufen, ist die Funktion, die das Ereignis X verarbeitet, asynchron oder synchron verarbeitet. Ich hatte den Eindruck, dass RaiseEvent und die Verarbeitung des Ereignisses synchron waren, es sei denn, sie wurden explizit in einem anderen Thread erstellt. Mir wurde jedoch anders gesagt.Werden Ereignishandler asynchron verarbeitet?

Antwort

6

Ereignisse werden standardmäßig synchron ausgelöst. Da asynchronen Aufruf unterstützen, ist es möglich, die Delegaten in der Aufrufliste eines Ereignisses asynchron aufzurufen. Dies ist jedoch nicht das Standardverhalten.

2

ich nur einige Tests haben auch ...

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 

Ausgang:
Einige Funktion - Raising Ereignis
Mein Handler - Ab 5 Sekunden Schlaf
Mein Handler - Awoken
Einige Funktion - Nach Ereignis

Verwandte Themen