使用C# 控制台應用程式時,可能需要捕獲Ctrl C (SIGINT) 擊鍵在應用程式退出之前執行特定的清理任務。本文深入探討了在 C# 控制台應用程式中捕捉 SIGINT 的最佳實踐。
建議的方法是訂閱 Console.CancelKeyPress 事件,該事件會在以下情況下觸發:使用者按下 Ctrl C。透過為此事件提供委託,您可以在應用程式之前執行清理程式碼退出。
public static void Main(string[] args) { Console.CancelKeyPress += delegate { // Cleanup code }; while (true) {} }
但是,這種方法有其限制。按下 Ctrl C 時,放置在清理委託之後的程式碼可能不會執行。
在不希望立即中斷的情況下,您可能希望優雅地退出計算或任務完成時的應用程式。使用設定重置事件可以控制退出過程:
private static bool keepRunning = true; public static void Main(string[] args) { Console.CancelKeyPress += (sender, e) => { e.Cancel = true; keepRunning = false; }; while (keepRunning) { // Task execution } Console.WriteLine("Exited gracefully"); }
按下 Ctrl C 時,e.Cancel 設定為 true,防止立即退出。 keepRunning 變數設定為 false,導致 while 迴圈在目前任務完成後終止。這允許應用程式正常退出。
以上是如何在 C# 控制台應用程式中優雅地處理 Ctrl C (SIGINT)?的詳細內容。更多資訊請關注PHP中文網其他相關文章!