Консольное приложение C #: Предотвращение печати Control-C? - PullRequest
5 голосов
/ 17 июня 2010

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

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

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

И в окнах вывода отображается:*

6/16/2010 15:24:34 PM: Ctrl + C хит.Выключение.
^ C

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

Ответы [ 3 ]

3 голосов
/ 17 июня 2010

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

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

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

    Environment.Exit(-1);
}
2 голосов
/ 17 июня 2010

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

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

Console.ReadLine();
0 голосов
/ 17 июня 2010

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

static void Console_CancelKeyPress(object sender, ConsoleCancelEventArgs e)
{
    Console.WriteLine("Control+C hit. Shutting down.");     
    Process.GetCurrentProcess().Kill();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...