Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah saya boleh mengendalikan penamatan permohonan konsol dengan anggun di C#?

Bagaimanakah saya boleh mengendalikan penamatan permohonan konsol dengan anggun di C#?

Mary-Kate Olsen
Mary-Kate Olsenasal
2025-01-28 10:01:13324semak imbas

How Can I Gracefully Handle Console Application Termination in 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

fungsi

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

Dengan melaksanakan pendekatan ini, anda dapat menjamin proses penutupan yang lebih terkawal dan boleh diramal untuk aplikasi konsol C# multithreaded anda.

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn