在 C# 控制台应用程序中处理 Ctrl C (SIGINT)
在 C# 中,捕获 Ctrl C (SIGINT) 允许在正常退出之前进行必要的清理控制台应用程序。 Console.CancelKeyPress 事件提供了处理此中断的方法。
使用 Console.CancelKeyPress
以下代码演示了如何使用 CancelKeyPress 事件:
public static void Main(string[] args) { Console.CancelKeyPress += delegate { // Perform clean-up actions }; while (true) {} }
当用户按下 Ctrl C 时,委托代码执行,启动清理过程,程序会立即退出。
特定用例
在不希望立即停止计算的情况下,建议使用替代方法:
class MainClass { private static bool keepRunning = true; public static void Main(string[] args) { Console.CancelKeyPress += delegate(object? sender, ConsoleCancelEventArgs e) { e.Cancel = true; MainClass.keepRunning = false; }; while (MainClass.keepRunning) { // Perform small chunks of work } Console.WriteLine("exited gracefully"); } }
此实现将 e.Cancel 标志设置为 true,防止程序立即终止。相反,keepRunning 变量设置为 false,允许 while 循环在任何正在进行的计算完成后退出。这种方法有利于程序正常终止。
以上是如何在 C# 控制台应用程序中优雅地处理 Ctrl C 中断?的详细内容。更多信息请关注PHP中文网其他相关文章!