我需要将C#Windows服务(.NET Framework 4.6.1)转换为控制台应用程序。因此,该应用程序没有真正的交互界面。 在Windows服务应用程序中,我具有OnStop()方法来执行终止和退出之前需要做的事情。
当然,我可以创建一个名称众所周知的文件,并在控制台应用程序中定期检查该文件,但是在我看来,这是一种较旧的解决方案。
是否有一种“最佳实践”要求控制台应用程序正常终止,以便有时间完成当前处理?
答案 0 :(得分:0)
所以我找到的解决方案具有以下代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApp1
{
class Program
{
private static bool keepRunning = true;
public static void Main(string[] args)
{
Console.WriteLine("Main started");
Console.CancelKeyPress += delegate (object sender, ConsoleCancelEventArgs e) {
e.Cancel = true;
keepRunning = false;
};
while (keepRunning)
{
Console.WriteLine("Doing really evil things...");
System.Threading.Thread.Sleep(3000);
}
Console.WriteLine("Exited gracefully");
}
}
}