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
Lepaskan: 2025-01-28 09:47:07
asal
987 orang telah melayarinya

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:
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
    }
}
Salin selepas log masuk

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 Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan