У меня есть консольное приложение, и я хочу аккуратно захватить 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
? Это не грандиозная сделка, но по какой-то причине я буду на ней зациклен, потому что я такой анал.
3 ответа
Будучи консольным приложением, я бы использовал 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();
}
Похожие вопросы
Новые вопросы
c#
C# (произносится как «see Sharp») — это высокоуровневый мультипарадигменный язык программирования со статической типизацией, разработанный Microsoft. Код C# обычно нацелен на семейство инструментов и сред выполнения Microsoft .NET, которое включает в себя .NET, .NET Framework, .NET MAUI и Xamarin среди прочих. Используйте этот тег для ответов на вопросы о коде, написанном на C#, или о формальной спецификации C#.