在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中文網其他相關文章!