C#如何检查事件处理程序是否完成

时间:2013-07-15 14:36:09

标签: c# silverlight event-handling

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

2 个答案:

答案 0 :(得分:3)

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

public void HandlingEvent( ...) {

   //do some stuff 


   RaiseAnotherEventHandler();

}

答案 1 :(得分:0)

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