异步多播代理

时间:2009-09-21 08:12:57

标签: c# multithreading events asynchronous delegates

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

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

1 个答案:

答案 0 :(得分:20)

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

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