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

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

Patricia Arquette
Lepaskan: 2025-01-28 09:51:08
asal
830 orang telah melayarinya

How Can I Capture Console Application Exit Events in C#?

Pengendalian permohonan konsol dengan anggun di C#

Pengurusan sumber yang betul adalah yang paling penting apabila membina aplikasi konsol. Keperluan umum adalah untuk melaksanakan tugas pembersihan sebelum aplikasi keluar. Walaupun C# tidak menawarkan acara langsung untuk ini, kami boleh memanfaatkan API Windows untuk mencapai fungsi ini.

Penyelesaian ini melibatkan menetapkan pengendali kawalan konsol untuk bertindak balas terhadap pelbagai isyarat penamatan. Ini membolehkan untuk melaksanakan kod tersuai sebelum aplikasi dimatikan, memastikan sumber dikeluarkan dengan betul.

inilah pelaksanaan praktikal:

using System;
using System.Runtime.InteropServices;

// Import the necessary Windows API function
[DllImport("Kernel32.dll")]
private static extern bool SetConsoleCtrlHandler(HandlerRoutine handler, bool add);

// Delegate type for the handler routine
private delegate bool HandlerRoutine(CtrlTypes ctrlType);

// Enumeration of control types
enum CtrlTypes
{
    CTRL_C_EVENT = 0,
    CTRL_BREAK_EVENT = 1,
    CTRL_CLOSE_EVENT = 2,
    CTRL_LOGOFF_EVENT = 5,
    CTRL_SHUTDOWN_EVENT = 6
}

// Our handler routine
private static bool ConsoleHandler(CtrlTypes sig)
{
    // Perform cleanup actions here, such as closing files or releasing resources
    Console.WriteLine("Console application is shutting down...");
    // ... your cleanup code ...
    return true; // Indicate that the handler processed the event
}

static void Main(string[] args)
{
    // Set the console control handler
    SetConsoleCtrlHandler(ConsoleHandler, true);

    // Main application logic
    Console.WriteLine("Console application running...");
    Console.ReadKey(); // Keep the console open until a key is pressed
}
Salin selepas log masuk
Kod ini mendaftarkan pengendali (

) yang dipanggil apabila konsol menerima isyarat penamatan (mis., Ctrl C, menutup tetingkap, penutupan sistem). Fungsi ConsoleHandler melaksanakan tugas pembersihan yang diperlukan. Kembali ConsoleHandler dari pengendali menandakan pemprosesan yang berjaya dalam acara tersebut. Kegagalan untuk mengendalikan peristiwa dengan anggun mungkin membawa kepada kebocoran sumber atau rasuah data. true

Atas ialah kandungan terperinci Bagaimanakah saya dapat menangkap 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