Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah saya dapat mengendalikan peristiwa keluar aplikasi konsol di C#?

Bagaimanakah saya dapat mengendalikan peristiwa keluar aplikasi konsol di C#?

Linda Hamilton
Linda Hamiltonasal
2025-01-28 09:47:07936semak imbas

How Can I Handle Console Application Exit Events in 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!

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