C#控制台应用程序:防止Control-C被打印?
问题描述:
我有一个控制台应用程序,我想捕获Control-C并优雅地关闭。C#控制台应用程序:防止Control-C被打印?
我有以下代码:
Console.CancelKeyPress += new ConsoleCancelEventHandler((o, e) =>
{
Logger.Log("Control+C hit. Shutting down.");
resetEvent.Set();
});
和输出窗口显示:
6/16/2010下午3点24分34秒:Ctrl + C组合命中。关机。
^ C
是否有办法防止控制-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);
}
答
虽然这不一定是你想实现一个解决方案,但它确实防止^ C被显示:
static void Console_CancelKeyPress(object sender, ConsoleCancelEventArgs e)
{
Console.WriteLine("Control+C hit. Shutting down.");
Process.GetCurrentProcess().Kill();
}
答
这应该工作...
Console.CancelKeyPress += new ConsoleCancelEventHandler((o, e) =>
{
Console.WriteLine("Control+C hit. Shutting down.");
Environment.Exit(0);
});
Console.ReadLine();