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

У меня такой код:

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

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

16.06.2010 15:24:34: Ctrl + C. Выключение.
^ C

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

5
Alan 17 Июн 2010 в 02:28

3 ответа

Лучший ответ

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

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

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

    Environment.Exit(-1);
}
3
João Angelo 17 Июн 2010 в 13:36

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

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

Console.ReadLine();
2
Ioannis Karadimas 17 Июн 2010 в 13:40

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

static void Console_CancelKeyPress(object sender, ConsoleCancelEventArgs e)
{
    Console.WriteLine("Control+C hit. Shutting down.");     
    Process.GetCurrentProcess().Kill();
}
0
anchandra 17 Июн 2010 в 06:39