Heim >Backend-Entwicklung >C++ >Wie kann ich Konsolenanwendungsereignisse in C#erfassen?
ordnungsgemäß beenden Konsolenantragsbeendigung in C#
ordnungsgemäßes Ressourcenmanagement ist bei Erstellung von Konsolenanwendungen von größter Bedeutung. Vor dem Ablauf der Anwendung ist es üblich, Reinigungsaufgaben auszuführen. Während C# dafür kein direktes Ereignis bietet, können wir die Windows -API nutzen, um diese Funktionalität zu erreichen.
Die Lösung beinhaltet das Einstellen eines Konsolenregelbehälters, um auf verschiedene Kündigungssignale zu reagieren. Dies ermöglicht das Ausführen von benutzerdefinierten Code, bevor die Anwendung abgeschaltet wird, um sicherzustellen, dass die Ressourcen korrekt veröffentlicht werden.
Hier ist eine praktische Implementierung:
<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>
Dieser Code registriert einen Handler (ConsoleHandler
), der aufgerufen wird, wenn die Konsole ein Terminierungssignal empfängt (z. B. Strg C, Schließung des Fensters, Systemstillstands). Die ConsoleHandler
-Funktion führt die erforderlichen Reinigungsaufgaben aus. Rückgabe true
vom Handler bedeutet eine erfolgreiche Verarbeitung der Veranstaltung. Das Versäumnis, das Ereignis anmutig zu verarbeiten, kann zu Ressourcenlecks oder Datenverschästung führen.
Das obige ist der detaillierte Inhalt vonWie kann ich Konsolenanwendungsereignisse in C#erfassen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!