我从一个自制的DLL调用一个方法。此方法触发一个事件,它由类中的EventHander引发。
问题是执行的控制返回到主程序(图中的WebClass),这使得在事件处理程序之前调用类能够捕获事件。
这是一个如何运作的小图 http://dl.dropbox.com/u/5654637/model1.png
这就是它实际上做的事情 http://dl.dropbox.com/u/5654637/model2.png
有没有办法调用类'方法并确保它在将控制权返回给调用者之前执行所有任务?
由于
答案 0 :(得分:0)
我必须看看你的其他DLL中发生了什么。默认情况下,它应该按您的意愿工作。除非你做一些使其异步的事情,否则.NET中的事件是同步的。当您触发事件时,触发该事件的代码将不会继续执行,直到所有正在侦听该事件的委托都执行完毕(或其中一个委托抛出异常)。
说代码“等待”直到委托完成执行甚至不是一个准确的语句,一个事件可以被认为是一个委托的集合,当一个事件被触发时,它循环遍历所有的委托并一次执行一个。
答案 1 :(得分:0)
您可以使用ManualResetEvent。
在Method1中等待设置事件。在您的事件处理程序E_DataEvent中,您正在设置信号。