我最近在一个广泛使用事件的项目上做了一些工作。我需要做的一件事是在多播委托上异步调用多个事件处理程序。我认为诀窍是在GetInvocationList的每个项目上调用BeginInvoke,但看起来好像在那里不存在BeginInvoke。
有没有办法做到这一点,还是我需要开始使用ThreadPool.QueueUserWorkItem并以这种方式滚动我自己的解决方案?
答案 0 :(得分:20)
GetInvocationList
只返回一个类型Delegate
的数组,它不知道相应的签名。但是,您可以将每个返回的值转换为特定的委托类型:
foreach (MyDelegate action in multicast.GetInvocationList())
{
action.BeginInvoke(...);
}