对于长时间运行的异步进程,最适合使用Main()方法

时间:2010-12-15 21:16:53

标签: c# .net

我有一个基本的C#控制台应用程序,它执行一个包含定时器和异步请求的相当长的运行过程。 Main()方法的唯一目的是初始化计时器,然后让它们在接下来的几个小时内完成它们。

我知道Windows服务适用于许多长时间运行的进程,但是不适合这个用例(需要时手动执行,总是在一天内终止,没有必须安装服务的障碍等)。

现在,我只是这样做:

while (true)
    Thread.Sleep(5000);

投掷一个Thread.Sleep似乎......出于某种原因变脏了。或者,在异步过程完成之前,停止应用程序终止是否真的是最好的做法?

2 个答案:

答案 0 :(得分:1)

您可以使用一个/多个ManualResetEvent从后台线程与前台线程进行通信。

Main中的前台线程可能会等到所有后台线程都发出信号表明它们已完成。

答案 1 :(得分:0)

你不应该是Thread.Sleep,但是你应该等待某种事件,当有任何事情时会发出信号,包括让自己沮丧。

您描述的应用程序更适合作为服务,而不是控制台应用程序。