我有一个控制台应用程序,我想要捕获Control-C并正常关闭。
我有以下代码:
Console.CancelKeyPress += new ConsoleCancelEventHandler((o, e) =>
{
Logger.Log("Control+C hit. Shutting down.");
resetEvent.Set();
});
输出窗口显示:
6/16/2010 3:24:34 PM:Control + C命中。关机
^ C
有没有办法阻止control-c字符^C
出现?这不是一个巨大的交易,但出于某种原因,我会注意到它,因为我是这样的肛门。
答案 0 :(得分:3)
作为控制台应用程序,我会使用Environment.Exit
来表示应用程序正在退出,这样就可以阻止^C
被打印出来。
你甚至可以提供一个特定的错误代码来象征用户按下 CTRL + C 。
static void Console_CancelKeyPress(object sender, ConsoleCancelEventArgs e)
{
Console.WriteLine("Control+C hit. Shutting down.");
Environment.Exit(-1);
}
答案 1 :(得分:2)
这应该有用......
Console.CancelKeyPress += new ConsoleCancelEventHandler((o, e) =>
{
Console.WriteLine("Control+C hit. Shutting down.");
Environment.Exit(0);
});
Console.ReadLine();
答案 2 :(得分:0)
虽然这不一定是您想要实现的解决方案,但它确实阻止了^ C的显示:
static void Console_CancelKeyPress(object sender, ConsoleCancelEventArgs e)
{
Console.WriteLine("Control+C hit. Shutting down.");
Process.GetCurrentProcess().Kill();
}