我即将开发一个控制台应用程序,它需要在特定时间不断运行并执行任务。我的问题是,保持应用程序处于活动状态的最佳方法或做法是什么?我的想法是:一个永远不会结束的循环?一个定时器睡眠,然后在需要时跳转到例程(在设定的睡眠期之后)?我将把应用程序编译为exe文件,然后使用AlwaysUp作为服务运行。敬礼。 彼得
虽然你真的应该使用服务来完成这个任务,但如果你需要或想要自己完成,你可以使用ManualResetEvent
来实现:
private ManualResetEvent Wait = new ManualResetEvent(false);
当您完成“启动”并希望只等待时,您需要执行以下操作:
Wait.WaitOne();
当您想停止并退出时,可以执行以下操作:
Wait.Set();
System.Windows.Forms
的引用,并调用 System.Windows.Forms.Application.Run()
来开始一个标准的应用程序消息循环。按下 Ctrl-C 将终止应用程序。Console.ReadKey()
暂停应用程序。例如: Console.WriteLine("Press [ANY] key to quit..."); Console.ReadKey();
当控制台应用程序只是等待事件发生时,我会在我的控制台应用程序中使用这种方法。无论哪种情况,应用程序都将继续运行并捕获触发的事件(例如来自计时器、WCF、FileWatcher 等)。我相信在某个时候它应该停止,不是吗?
如果你想让它作为控制台应用程序运行,可以生成一个执行工作的线程,并使主线程阻塞在Console.ReadLine()上。
如果你真的只想永远暂停主线程,那就在一个你从未触发的ManualResetEvent上阻塞。
但是,如果可以的话,请考虑使用服务。