Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah saya dapat menangkap acara keluar konsol dalam aplikasi C# multithreaded?

Bagaimanakah saya dapat menangkap acara keluar konsol dalam aplikasi C# multithreaded?

DDD
DDDasal
2025-01-28 09:56:14278semak imbas

How Can I Capture Console Exit Events in C# Multithreaded Applications?

Menguruskan penamatan permohonan konsol di C# dengan pelbagai thread

Dalam aplikasi konsol C# multithreaded, memastikan penutupan program bersih adalah kritikal untuk pengurusan sumber. Malangnya, .NET tidak menawarkan acara langsung untuk pengendalian keluar konsol. Ini memerlukan kaedah alternatif.

Satu penyelesaian yang berkesan memanfaatkan fungsi API Windows

melalui SetConsoleCtrlHandler. Ini membolehkan pendaftaran fungsi pengendali tersuai yang dicetuskan oleh isyarat kawalan konsol tertentu. DllImport

inilah pelaksanaan ilustrasi:

<code class="language-csharp">using System;
using System.Runtime.InteropServices;

// ... (rest of the code remains the same)</code>
Coretan kod ini menunjukkan cara menggunakan

untuk menangkap SetConsoleCtrlHandler, CTRL_C_EVENT, CTRL_LOGOFF_EVENT, dan CTRL_SHUTDOWN_EVENT. Fungsi CTRL_CLOSE_EVENT dilaksanakan apabila mana -mana peristiwa ini berlaku. Handler Pertimbangan penting:

Kebolehpercayaan kaedah ini mungkin dikompromikan pada Windows 7, seperti yang dinyatakan dalam perbincangan yang berkaitan. Penyiasatan lanjut mungkin diperlukan untuk keserasian yang optimum dalam versi Windows yang berbeza.

Atas ialah kandungan terperinci Bagaimanakah saya dapat menangkap acara keluar konsol dalam aplikasi C# multithreaded?. 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