3

我有一个设置一些事件的应用程序,需要等待这些事件发生后再退出。最好的方法是什么?我知道 Thread.Sleep 是一个糟糕的选择,原因有很多,包括它甚至无法在睡眠时处理事件。我显然不会用一个什么都不做的while循环来浪费cpu周期。那么,防止控制台应用程序在不确定的时间内退出以便它可以在引发事件时处理事件的最简单方法是什么?

最终,这将成为一项服务,这将使这成为一个非问题,但现在在我的第一次迭代中,我只是在控制台应用程序中测试我的一些代码,然后再将其变成真正的服务(之前没有做过服务,所以我想确保我的代码是可靠的,以免使下一步复杂化)。在我写这篇文章时,我刚刚意识到我可以在 WinForms 应用程序中对其进行测试,这样就可以解决我的问题,呵呵。

4

2 回答 2

1

一个不错的选择是使用ManualResetEvent。这使您可以在等待设置事件时进行阻塞,而无需休眠。您的控制台应用程序的主例程可以调用WaitOne()ManualResetEvent这将阻塞。当您的例程完成后,只需调用ManualResetEvent.Set()以允许控制台应用程序关闭。

如果您需要等待一系列事件,CountdownEvent是另一种选择。您可以根据需要调用AddCount()Signal来增加和减少计数。

于 2012-06-22T23:07:40.973 回答
1

我在基础上编写了可以作为控制台应用程序运行和调试的服务。

“让它更复杂”的方法对我也不起作用。

于 2012-06-25T19:10:01.940 回答