从.NET控制台应用程序正常(且受控)退出

时间:2018-11-21 14:06:08

标签: c# .net windows-services console-application

我需要将C#Windows服务(.NET Framework 4.6.1)转换为控制台应用程序。因此,该应用程序没有真正的交互界面。 在Windows服务应用程序中,我具有OnStop()方法来执行终止和退出之前需要做的事情。

当然,我可以创建一个名称众所周知的文件,并在控制台应用程序中定期检查该文件,但是在我看来,这是一种较旧的解决方案。

是否有一种“最佳实践”要求控制台应用程序正常终止,以便有时间完成当前处理?

1 个答案:

答案 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");
        }
    }
}