Приложение C # Console: предотвращение напечатана Control-C?

StackOverflow https://stackoverflow.com/questions/3057633

Вопрос

У меня есть приложение консоли, и я хочу захватить Control-C и изящно отключить.

У меня есть следующий код:

Console.CancelKeyPress += new ConsoleCancelEventHandler((o, e) =>
{
   Logger.Log("Control+C hit. Shutting down.");
   resetEvent.Set();
});

И выходные окна показывают:

16/16/2010 3:24:34 PM: Control + C Хит. Выключение.
^ C.

Есть ли способ предотвратить символ Control-C ^C От появления появления? Это не огромный Сделка, но по какой-то причине я зацикливаю на нем, потому что я такой такой.

Это было полезно?

Решение

Быть консольным приложением, которое я бы использовал Environment.Exit Чтобы сигнализировать, что приложение выходит и таким образом останавливает ^C от печати.

Вы можете даже предоставить конкретный код ошибки, чтобы символизировать, что пользователь нажал Ctrl + C..

static void Console_CancelKeyPress(object sender, ConsoleCancelEventArgs e)
{
    Console.WriteLine("Control+C hit. Shutting down."); 

    Environment.Exit(-1);
}

Другие советы

Это должно работать ...

Console.CancelKeyPress += new ConsoleCancelEventHandler((o, e) =>
{
    Console.WriteLine("Control+C hit. Shutting down.");
    Environment.Exit(0);
});

Console.ReadLine();

Хотя это не обязательно решение, которое вы хотите реализовать, он предотвращает отображение ^ C:

static void Console_CancelKeyPress(object sender, ConsoleCancelEventArgs e)
{
    Console.WriteLine("Control+C hit. Shutting down.");     
    Process.GetCurrentProcess().Kill();
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top