ric*_*ard 9 .net c# begininvoke multicastdelegate
根据Jon Skeet的说法,"您只能在具有单个目标调用的委托上调用BeginInvoke."
这是为什么?真正的原因是什么?
注意:为了澄清(因为我犯了这个错误),我说的BeginInvoke是代表,而不是控件.
我认为Jon Skeet在您链接的帖子中做得很好:
您希望线程如何工作?您是否必须同步运行每个调用,但是相对于调用线程异步运行整个事件,或者您是否可以异步运行每个调用?
如果是前者,只需运行一个同步调用委托的线程池工作项.如果是后者,请使用Delegate.GetInvocationList获取调用列表,并依次对列表元素调用BeginInvoke.
基本上呼吁BeginInvokea MulticastDelegate是不明确的,你想让代表们互相等待吗?虽然理论上它可以为您决定,但已经做出选择,迫使您通过以不同方式调用委托来明确选择您想要的方法.
换句话说,它是避免混淆的设计选择.另外值得注意的是,BeginInvoke已经失宠并且新的异步编程方法可用,因此不太可能更新这个旧标准,所以即使他们现在想要改变,也没有理由.
| 归档时间: |
|
| 查看次数: |
1471 次 |
| 最近记录: |