事件处理程序执行顺序

如果我设置了多个事件处理程序,如下所示:

_webservice.RetrieveDataCompleted += ProcessData1;
_webservice.RetrieveDataCompleted += ProcessData2;

当事件RetrieveDataCompleted被触发时,处理程序运行的顺序是什么? 他们是否在同一个线程中运行,并按照已注册的顺序依次运行?


目前,它们是按照它们注册的顺序执行的。 但是,这是一个实现细节,我不会依赖这种行为在未来的版本中保持不变,因为它不是规范所要求的。


委托的调用列表是一组有序的委托,其中列表的每个元素都只是调用由委托调用的其中一个方法。 调用列表可以包含重复的方法。 在调用期间, 委托会按照它们在调用列表中的显示顺序调用方法

从这里:委托类


顺序是任意的。 你不能依靠从一个调用到下一个调用的特定顺序执行处理程序。

编辑:而且 - 除非这只是出于好奇 - 你需要知道的事实表明了严重的设计问题。

链接地址: http://www.djcxy.com/p/68061.html

上一篇: Order of event handler execution

下一篇: How to migrate work items from TFS to Visual Studio Team Services