我有一个主线程通过实现基于事件的异步模式的类启动一些工作线程(http://msdn.microsoft.com/en-us/library/ms228969.aspx)。不幸的是,一旦主线程完成了工作线程的设置,它就会退出。如何在使用基于事件的异步模式时让主线程等待其他线程?
我希望主线程无限期地等待,直到anEventHandler
方法被调用,然后处理该方法。 asyncevents
无限期地监听事件直到取消,因此他们可能会在完成之前多次调用anEventHandler
方法。
注意:没有相关的GUI,我只是使用这种模式。
public static void Main(String[] args) {
AsyncEventClass asyncevent = new AsyncEventClass();
// setup event handling
asyncevent.Events += new EventsHandler(anEventHandler);
// start event monitoring threads
asyncevent.monitorAsync(1);
asyncevent.monitorAsync(2);
asyncevent.monitorAsync(3);
System.Console.WriteLine("The main thread now ends. :(");
}
所有的例子在线使用System.Console.ReadLine()
,但是,似乎是在生产代码中一个可怕的想法。
我想我可以公开AsyncEventClass通过实现基于事件的异步模式创建的IAsyncResult,然后等待。有没有更好的办法?如果可能的话,我想避免暴露(出于耦合的原因)。 – jtfairbank
你必须使用这种模式吗?如果你能够使用任务,它使生活变得更简单。 –