异步多播代理

我最近在一个广泛使用事件的项目上做了一些工作。 我需要做的一件事是在多播委托上异步调用多个事件处理程序。 我认为诀窍是在GetInvocationList中的每个项目上调用BeginInvoke,但看起来好像BeginInvoke不存在。

有没有办法做到这一点,或者我是否需要开始使用ThreadPool.QueueUserWorkItem并以这种方式滚动我自己的解决方案?

GetInvocationList只返回一个Delegate类型的数组,它不知道相应的签名。 但是,您可以将每个返回的值转换为特定的委托类型:

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