2010-06-16 104 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();