Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah saya dapat menangkap peristiwa keluar aplikasi konsol di C#?
Pengendalian permohonan konsol dengan anggun di C#
Pengurusan sumber yang betul adalah yang paling penting apabila membina aplikasi konsol. Keperluan umum adalah untuk melaksanakan tugas pembersihan sebelum aplikasi keluar. Walaupun C# tidak menawarkan acara langsung untuk ini, kami boleh memanfaatkan API Windows untuk mencapai fungsi ini.Penyelesaian ini melibatkan menetapkan pengendali kawalan konsol untuk bertindak balas terhadap pelbagai isyarat penamatan. Ini membolehkan untuk melaksanakan kod tersuai sebelum aplikasi dimatikan, memastikan sumber dikeluarkan dengan betul.
inilah pelaksanaan praktikal:
<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>Kod ini mendaftarkan pengendali (
) yang dipanggil apabila konsol menerima isyarat penamatan (mis., Ctrl C, menutup tetingkap, penutupan sistem). Fungsi ConsoleHandler
melaksanakan tugas pembersihan yang diperlukan. Kembali ConsoleHandler
dari pengendali menandakan pemprosesan yang berjaya dalam acara tersebut. Kegagalan untuk mengendalikan peristiwa dengan anggun mungkin membawa kepada kebocoran sumber atau rasuah data. true
Atas ialah kandungan terperinci Bagaimanakah saya dapat menangkap peristiwa keluar aplikasi konsol di C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!