2009-06-16 18 views
5

In VB .NET, quando si chiama RaiseEvent X(), la funzione che gestisce l'evento X viene elaborata in modo asincrono o in modo sincrono. Avevo l'impressione che RaiseEvent e l'elaborazione dell'evento fossero sincroni a meno che non venissero creati esplicitamente su un altro thread. Tuttavia, mi è stato detto diversamente.I gestori eventi vengono elaborati in modo asincrono?

risposta

6

Gli eventi vengono generati in modo sincrono per impostazione predefinita. Poiché MulticastDelegates sono progettati per supportare l'invocazione asincrona, è possibile richiamare i delegati nell'elenco di invocazione di un evento in modo asincrono, ma questo non è il comportamento predefinito.

2

ho solo fatto dei test anche ...

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 

uscita:
Alcune funzioni - evento di raccolta
mio Handler - A partire dal 5 secondi sonno
mio Handler - Awoken
Alcune funzioni - Dopo Evento

Problemi correlati