当我在Release中运行以下内容时,按CTRL + C
会成功终止该应用程序。
在Debug中运行时,按CTRL + C
会在while
循环中挂起。
为什么呢?有办法解决这个问题吗?
static void Main(string[] args)
{
while (true)
{
// Press CTRL + C...
// When running in Release, the app closes down
// When running in Debug, it hangs in here
}
}
答案 0 :(得分:6)
实现此目的的一种方法是使用Console.CancelKeyPress
在Control修饰符键
(Ctrl)
和任何一个时发生 按下ConsoleKey.C
控制台键(C)或Break键 同时(Ctrl+C or Ctrl+Break)
。当用户按下
Ctrl+C
或Ctrl+Break
时,CancelKeyPress
事件被触发和应用程序的ConsoleCancelEventHandler
事件 处理程序已执行。传递事件处理程序ConsoleCancelEventArgs
对象
示例强>
private static bool keepRunning = true;
public static void Main(string[] args)
{
Console.CancelKeyPress += delegate(object sender, ConsoleCancelEventArgs e) {
e.Cancel = true;
keepRunning = false;
};
while (keepRunning)
{
// Do stuff
}
Console.WriteLine("exited gracefully");
}