C#“持久”调用DLL

时间:2011-03-03 13:14:58

标签: c# dll programming-languages event-handling

我从一个自制的DLL调用一个方法。此方法触发一个事件,它由类中的EventHander引发。

问题是执行的控制返回到主程序(图中的WebClass),这使得在事件处理程序之前调用类能够捕获事件。

这是一个如何运作的小图 http://dl.dropbox.com/u/5654637/model1.png

这就是它实际上做的事情 http://dl.dropbox.com/u/5654637/model2.png

有没有办法调用类'方法并确保它在将控制权返回给调用者之前执行所有任务?

由于

2 个答案:

答案 0 :(得分:0)

我必须看看你的其他DLL中发生了什么。默认情况下,它应该按您的意愿工作。除非你做一些使其异步的事情,否则.NET中的事件是同步的。当您触发事件时,触发该事件的代码将不会继续执行,直到所有正在侦听该事件的委托都执行完毕(或其中一个委托抛出异常)。

说代码“等待”直到委托完成执行甚至不是一个准确的语句,一个事件可以被认为是一个委托的集合,当一个事件被触发时,它循环遍历所有的委托并一次执行一个。

答案 1 :(得分:0)

您可以使用ManualResetEvent

在Method1中等待设置事件。在您的事件处理程序E_DataEvent中,您正在设置信号。