Изящный (и контролируемый) выход из консольного приложения .NET - PullRequest
0 голосов
/ 21 ноября 2018

Мне нужно преобразовать службу Windows на C # (.NET Framework 4.6.1) в консольное приложение.Так что у этого приложения нет реального интерактивного интерфейса.В приложении службы Windows у меня есть метод OnStop (), чтобы сделать то, что мне нужно, прежде чем завершить ... и выйти.

Конечно, я могу создать файл с хорошо известным именем и в консолиПриложение периодически проверяет наличие этого файла, но мне кажется, это решение в старом стиле.

Есть ли «наилучшая практика» - просить консольное приложение изящно завершить работу, успев завершить текущую обработку?

1 Ответ

0 голосов
/ 26 ноября 2018

Итак, решение, которое я нашел, имеет следующий код

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");
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...