在调试模式下给出ctrl + c时,控制台应用程序不会退出

时间:2018-04-05 04:08:49

标签: c#

当我在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
    }
}

1 个答案:

答案 0 :(得分:6)

实现此目的的一种方法是使用Console.CancelKeyPress

  

在Control修饰符键(Ctrl)和任何一个时发生   按下ConsoleKey.C控制台键(C)或Break键   同时(Ctrl+C or Ctrl+Break)

     

当用户按下Ctrl+CCtrl+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");
}