4

有没有一种优雅的方式来检查一个事件是否已经完成?我唯一的选择似乎是创建另一个事件处理程序,该处理程序在我的第一个事件完成时被调用。

4

2 回答 2

3

如果调用链中没有涉及任何多线程,只需在第一个结束时调用事件处理函数:

public void HandlingEvent( ...) {

   //do some stuff 


   RaiseAnotherEventHandler();

}
于 2013-07-15T14:38:54.323 回答
0

事件处理程序只不过是返回类型为 VOID 的多播委托。在内部,它实现了观察者模式,并且在事件通知程序调用/引发事件时将消息广播给所有订阅者。原则上,事件通知器不担心订阅者端发生了什么,但是,如果订阅者发生任何异常并且未处理,则将异常重新抛出给通知器。因此,如果您将事件调用/引发代码包含在 try/catch 块中,并且如果您的事件引发/调用代码执行时没有任何异常,则意味着所有事件处理程序/订阅者都已执行并且事件执行已完成。

于 2013-07-15T14:48:41.837 回答