Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah saya dapat mengendalikan peristiwa keluar aplikasi konsol di C#?
penutupan anggun dalam aplikasi konsol C#: mengendalikan acara keluar
Aplikasi konsol C# multi-threaded memerlukan prosedur pembersihan yang mantap setelah penamatan untuk memastikan pengurusan sumber yang betul. Walaupun .NET tidak menawarkan acara keluar terbina dalam, kami boleh memanfaatkan API Win32 untuk penyelesaian yang boleh dipercayai.
ketiadaan peristiwa langsung .net
Malangnya, rangka kerja .NET tidak mempunyai acara langsung untuk mengesan keluar aplikasi.
menggunakan API Win32: Pendekatan Praktikal
Fungsi Win32 API menyediakan mekanisme untuk mendaftarkan pengendali untuk pelbagai isyarat kawalan, termasuk penutupan konsol. Ini membolehkan untuk melaksanakan kod tersuai sebelum permohonan ditamatkan. SetConsoleCtrlHandler
Contoh Kod Contoh: Melaksanakan Pengendali Keluar Konsol
coretan kod berikut menunjukkan mendaftarkan pengendali untuk konsol acara rapat:
Pertimbangan dan batasan penting:
<code class="language-csharp">using System; using System.Runtime.InteropServices; // ... other using statements ... public class Program { [DllImport("Kernel32.dll")] private static extern bool SetConsoleCtrlHandler(HandlerRoutine handler, bool add); private delegate bool HandlerRoutine(CtrlTypes ctrlType); private enum CtrlTypes { CTRL_C_EVENT = 0, CTRL_BREAK_EVENT = 1, CTRL_CLOSE_EVENT = 2, CTRL_LOGOFF_EVENT = 5, CTRL_SHUTDOWN_EVENT = 6 } private static bool Handler(CtrlTypes ctrlType) { Console.WriteLine("Console exit event detected: " + ctrlType); // Perform cleanup operations here (e.g., closing files, stopping threads) return true; // Indicate that the handler processed the event } public static void Main(string[] args) { SetConsoleCtrlHandler(Handler, true); // ... your application's main logic ... Console.ReadKey(); // Keep the console open until a key is pressed } }</code>
Pendekatan ini bergantung pada API Windows dan mungkin tidak mudah alih secara langsung ke persekitaran bukan Windows. Fungsi hendaklah melaksanakan semua tugas pembersihan yang diperlukan, seperti menutup fail, melepaskan sumber, dan memastikan penamatan benang sebelum kembali
. Kembali menunjukkan bahawa pengendali sistem lalai harus dipanggil. Ingatlah untuk mengendalikan pengecualian yang berpotensi dalam fungsi Handler
. true
Atas ialah kandungan terperinci Bagaimanakah saya dapat mengendalikan peristiwa keluar aplikasi konsol di C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!