Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah saya boleh mengendalikan penamatan permohonan konsol dengan anggun di C#?
penamatan anggun aplikasi konsol C#
Aplikasi konsol C# multithreaded sering memerlukan prosedur penutupan yang mantap untuk memastikan pembersihan sumber dan penamatan benang yang betul. Walaupun .NET tidak memberikan acara langsung untuk ini, kami boleh memanfaatkan interop untuk menangkap isyarat keluar konsol.
Menggunakan : SetConsoleCtrlHandler
dari perpustakaan SetConsoleCtrlHandler
membolehkan pendaftaran pengendali adat untuk peristiwa penamatan konsol (seperti Ctrl C, Logoff, atau Shutdown). Pengendali ini adalah perwakilan acara: Kernel32
<code class="language-csharp">delegate bool EventHandler(CtrlType sig);</code>
Melaksanakan pengendali penutupan:
Fungsi pengendali melaksanakan tugas pembersihan setelah menerima isyarat penamatan:
<code class="language-csharp">private static bool Handler(CtrlType sig) { switch (sig) { case CtrlType.CTRL_C_EVENT: case CtrlType.CTRL_LOGOFF_EVENT: case CtrlType.CTRL_SHUTDOWN_EVENT: case CtrlType.CTRL_CLOSE_EVENT: // Perform cleanup actions (e.g., close files, stop threads) return true; // Signal successful handling default: return false; // Signal unhandled event } }</code>
Mendaftar pengendali:
Pengendali didaftarkan menggunakan: SetConsoleCtrlHandler
<code class="language-csharp">SetConsoleCtrlHandler(Handler, true); // true adds the handler</code>Ini memastikan fungsi
dipanggil sebelum permohonan berakhir. Handler
Nota penting:
Kebolehpercayaan kaedah ini mungkin berbeza -beza mengikut sistem operasi. Untuk maklumat yang lebih terperinci mengenai keserasian rentas platform dan batasan yang berpotensi, sila rujuk dokumentasi dan sumber komuniti yang relevan. Pengendalian thread yang betul dalam fungsi adalah penting untuk mengelakkan tingkah laku yang tidak dijangka. Pertimbangkan menggunakan teknik seperti token pembatalan atau mekanisme penutupan yang selamat. Handler
Atas ialah kandungan terperinci Bagaimanakah saya boleh mengendalikan penamatan permohonan konsol dengan anggun di C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!