2009-09-21 13 views
12

He estado haciendo un trabajo últimamente en un proyecto que hace un uso extenso de eventos. Una de las cosas que debo hacer es llamar asincrónicamente a múltiples manejadores de eventos en un delegado de multidifusión. Pensé que el truco sería llamar a BeginInvoke en cada elemento de GetInvocationList, pero parece que BeginInvoke no existe allí.Delegados de multidifusión asincrónica

¿Hay alguna manera de hacer esto o tengo que empezar a usar ThreadPool.QueueUserWorkItem y ordenar mi propia solución de esa manera?

Respuesta

19

GetInvocationList simplemente devuelve una matriz del tipo Delegate que no conoce la firma correspondiente. Sin embargo, puede convertir cada valor devuelto a su tipo de delegado específico:

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

D'oh! ¡Por supuesto! Muchas gracias, Jon. :) –

Cuestiones relacionadas