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
Patricia Arquetteasal
2025-01-28 09:51:08807semak imbas

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:

<code class="language-csharp">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
}</code>
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:
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