2009-09-21 34 views
12

我最近在一個廣泛使用事件的項目上做了一些工作。我需要做的事情之一是在多播委託上異步調用多個事件處理程序。我認爲訣竅是從GetInvocationList的每個項目調用BeginInvoke,但似乎BeginInvoke在那裏不存在。異步多播代理

有沒有辦法做到這一點,還是我需要開始使用ThreadPool.QueueUserWorkItem和排序我自己的解決方案?

回答

19

GetInvocationList只是返回不知道相應簽名的Delegate類型的數組。但是,您可以將每個返回的值轉換爲您的特定代表類型:

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

D'oh!當然!謝謝,Jon。 :) – 2009-09-21 08:17:10