When I run the below in Release, pressing CTRL + C
successfully terminates the application.
When running in Debug, pressing CTRL + C
hangs in the while
loop below.
Why? Is there a way around this?
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
}
}
One way is to achieve this is to use Console.CancelKeyPress
Occurs when the Control modifier key
(Ctrl)
and either theConsoleKey.C
console key (C) or the Break key are pressed simultaneously(Ctrl+C or Ctrl+Break)
.When the user presses either
Ctrl+C
orCtrl+Break
, theCancelKeyPress
event is fired and the application'sConsoleCancelEventHandler
event handler is executed. The event handler is passed aConsoleCancelEventArgs
object
Example
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");
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With