2009-09-21 9 views
12

Ostatnio robiłem kilka prac nad projektem, który szeroko wykorzystuje zdarzenia. Jedną z rzeczy, które muszę zrobić, to asynchroniczne wywoływanie wielu procedur obsługi zdarzeń na delegacie multiemisji. Pomyślałem, że trik będzie wywoływać BeginInvoke na każdym elemencie z GetInvocationList, ale wygląda na to, że BeginInvoke tam nie istnieje.Asynchroniczni uczestnicy multiemisji

Czy istnieje sposób, aby to zrobić, czy muszę zacząć używać ThreadPool.QueueUserWorkItem i sortować w ten sposób moje własne rozwiązanie?

Odpowiedz

19

GetInvocationList po prostu zwraca tablicę typu Delegate, która nie zna odpowiedniego podpisu. Możesz jednak przesłać każdą zwróconą wartość do określonego typu delegata:

foreach (MyDelegate action in multicast.GetInvocationList()) 
{ 
    action.BeginInvoke(...); 
} 
+0

D'oh! Oczywiście! Wielkie dzięki, Jon. :) –