優雅地處理C#
中的控制台應用程序終止構建控制台應用程序時,適當的資源管理至關重要。 一個普遍的需求是在應用程序退出之前執行清理任務。雖然C#沒有為此提供直接事件,但我們可以利用Windows API實現此功能。
>解決方案涉及設置控制台控制處理程序以響應各種終止信號。 這允許在應用程序關閉之前執行自定義代碼,以確保正確發布資源。這是一個實用的實現:
此代碼會在控制台接收終止信號時(例如Ctrl c,關閉窗口,系統關閉)時,該代碼會登記一個處理程序(
<code class="language-csharp">using System; using System.Runtime.InteropServices; // Import the necessary Windows API function [DllImport("Kernel32.dll")] private static extern bool SetConsoleCtrlHandler(HandlerRoutine handler, bool add); // Delegate type for the handler routine private delegate bool HandlerRoutine(CtrlTypes ctrlType); // Enumeration of control types enum CtrlTypes { CTRL_C_EVENT = 0, CTRL_BREAK_EVENT = 1, CTRL_CLOSE_EVENT = 2, CTRL_LOGOFF_EVENT = 5, CTRL_SHUTDOWN_EVENT = 6 } // Our handler routine private static bool ConsoleHandler(CtrlTypes sig) { // Perform cleanup actions here, such as closing files or releasing resources Console.WriteLine("Console application is shutting down..."); // ... your cleanup code ... return true; // Indicate that the handler processed the event } static void Main(string[] args) { // Set the console control handler SetConsoleCtrlHandler(ConsoleHandler, true); // Main application logic Console.WriteLine("Console application running..."); Console.ReadKey(); // Keep the console open until a key is pressed }</code>)。
>功能執行必要的清理任務。 從處理程序返回ConsoleHandler
表示事件的成功處理。 不優雅地處理事件可能會導致資源洩漏或數據損壞。 ConsoleHandler
>
以上是如何捕獲C#中的控制台應用程序退出事件?的詳細內容。更多資訊請關注PHP中文網其他相關文章!