2010-06-16 66 views
5

我有一个控制台应用程序,我想捕获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出现?这不是一个巨大的交易,但由于某种原因,我会重视它,因为我是这样的肛门。

回答

3

作为一个控制台应用程序,我会用Environment.Exit以表示该应用程序退出,这阻止^C被打印。

你甚至可以提供一个特定的错误代码来象征用户按下了CTRL + C 。

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

    Environment.Exit(-1); 
} 
0

虽然这不一定是你想实现一个解决方案,但它确实防止^ C被显示:

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

这应该工作...

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

Console.ReadLine();