我有一个基本的C#控制台应用程序,它执行一个包含定时器和异步请求的相当长的运行过程。 Main()方法的唯一目的是初始化计时器,然后让它们在接下来的几个小时内完成它们。
我知道Windows服务适用于许多长时间运行的进程,但是不适合这个用例(需要时手动执行,总是在一天内终止,没有必须安装服务的障碍等)。
现在,我只是这样做:
while (true)
Thread.Sleep(5000);
投掷一个Thread.Sleep似乎......出于某种原因变脏了。或者,在异步过程完成之前,停止应用程序终止是否真的是最好的做法?
答案 0 :(得分:1)
您可以使用一个/多个ManualResetEvent从后台线程与前台线程进行通信。
Main
中的前台线程可能会等到所有后台线程都发出信号表明它们已完成。
答案 1 :(得分:0)
你不应该是Thread.Sleep,但是你应该等待某种事件,当有任何事情时会发出信号,包括让自己沮丧。
您描述的应用程序更适合作为服务,而不是控制台应用程序。