2009-09-21 6 views
12

J'ai récemment travaillé sur un projet qui utilise intensivement les événements. L'une des choses que je dois faire est d'appeler de manière asynchrone plusieurs gestionnaires d'événements sur un délégué de multidiffusion. Je pensais que l'astuce serait d'appeler BeginInvoke sur chaque élément de GetInvocationList, mais il semble que BeginInvoke n'existe pas là.Délégués multidiffusion asynchrones

Existe-t-il un moyen de le faire ou dois-je commencer à utiliser ThreadPool.QueueUserWorkItem et trier ma propre solution de cette façon?

Répondre

19

GetInvocationList renvoie simplement un tableau de type Delegate qui ne connaît pas la signature appropriée. Toutefois, vous pouvez convertir chaque valeur renvoyée en type de délégué spécifique:

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

D'oh! Bien sûr! Merci beaucoup, Jon. :) –

Questions connexes