C#控制台应用程序:防止打印Control-C?

时间:2010-06-16 22:28:52

标签: c# console-application control-characters

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

3 个答案:

答案 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();
}