Maison >développement back-end >C++ >Comment puis-je capturer les événements de sortie de l'application de console en C #?
Gestion gracieusement la terminaison des applications de la console en C #
La gestion appropriée des ressources est primordiale lors de la création d'applications de console. Un besoin courant consiste à exécuter des tâches de nettoyage avant la sortie de l'application. Bien que C # n'offre pas d'événement direct pour cela, nous pouvons tirer parti de l'API Windows pour réaliser cette fonctionnalité.
La solution consiste à définir un gestionnaire de contrôle de la console pour répondre à divers signaux de terminaison. Cela permet d'exécuter un code personnalisé avant l'arrêt de l'application, garantissant que les ressources sont correctement publiées.
Voici une implémentation pratique:
<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>
Ce code enregistre un gestionnaire (ConsoleHandler
) qui s'appelle lorsque la console reçoit un signal de terminaison (par exemple, Ctrl C, fermant la fenêtre, arrêt du système). La fonction ConsoleHandler
effectue les tâches de nettoyage nécessaires. Le retour true
du gestionnaire signifie un traitement réussi de l'événement. Le fait de ne pas gérer l'événement gracieusement peut entraîner des fuites de ressources ou une corruption de données.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!