2009-06-16 18 views
5

VB. NET'te, RaiseEvent X() öğesini çağırdığınızda, X olayının senkronize olmayan veya eşzamanlı olarak işlenmesini sağlayan işlevdir. RaiseEvent ve olayın işlenmesinin başka bir iş parçacığı üzerinde açıkça oluşturulmadığı sürece Senkronize olduğu izlenimindeydim. Aksine başka türlü söylendi.Olay İşleyicileri Eşzamansız Olarak İşleniyor mu?

cevap

6

Olaylar varsayılan olarak eşzamanlı olarak yükseltilir. MulticastDelegates, eşzamansız çağrıyı destekleyecek şekilde tasarlandığından, bir etkinliğin çağrılma listesinde eşzamansız olarak delegeleri çağırmak mümkündür, ancak bu varsayılan davranış değildir. Sadece bazı test yaptım

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 

Çıktı:
Bazı fonksiyonu - Raising Olay
My Handler - Başlangıç ​​5 saniye uyku
My Handler - Awoken
Bazı fonksiyonu - sonra Olay

İlgili konular