【问题标题】:Asynchronous Multicast Delegates异步多播委托
【发布时间】:2009-09-21 08:12:57
【问题描述】:

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

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

【问题讨论】:

    标签: c# multithreading events asynchronous delegates


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2014-11-01
      • 2011-01-12
      • 2017-06-23
      • 2010-11-27
      • 2012-07-13
      • 2012-06-08
      • 2012-05-29
      • 1970-01-01
      相关资源
      最近更新 更多