异步多播代理

Jer*_*ett 14 c# events multithreading delegates asynchronous

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

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

Jon*_*eet 20

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

foreach (MyDelegate action in multicast.GetInvocationList())
{
    action.BeginInvoke(...);
}
Run Code Online (Sandbox Code Playgroud)