5

我有一个控制台应用程序,我想捕获 Control-C 并优雅地关闭。

我有以下代码:

Console.CancelKeyPress += new ConsoleCancelEventHandler((o, e) =>
{
   Logger.Log("Control+C hit. Shutting down.");
   resetEvent.Set();
});

输出窗口显示:

2010 年 6 月 16 日下午 3:24:34:Control+C 命中。关闭。
^C

有没有办法防止 control-c 字符^C出现?这不是什么大不了的事,但出于某种原因,我会专注于它,因为我就是那样的肛门。

4

3 回答 3

3

作为一个控制台应用程序,我会用它Environment.Exit来表示应用程序正在退出,并以此方式停止^C打印。

您甚至可以提供一个特定的错误代码来表示用户按下了CTRL+C

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

    Environment.Exit(-1);
}
于 2010-06-17T09:36:49.420 回答
2

这应该工作...

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

Console.ReadLine();
于 2010-06-17T09:40:47.693 回答
0

虽然这不一定是您要实施的解决方案,但它确实阻止了 ^C 的显示:

static void Console_CancelKeyPress(object sender, ConsoleCancelEventArgs e)
{
    Console.WriteLine("Control+C hit. Shutting down.");     
    Process.GetCurrentProcess().Kill();
}
于 2010-06-17T02:39:46.297 回答