Gestion de Ctrl C (SIGINT) dans les applications de console C#
En C#, le recouvrement de Ctrl C (SIGINT) permet les nettoyages nécessaires avant de quitter en douceur une application console. L'événement Console.CancelKeyPress fournit un moyen de gérer cette interruption.
Utilisation de Console.CancelKeyPress
Le code suivant montre comment utiliser l'événement CancelKeyPress :
public static void Main(string[] args) { Console.CancelKeyPress += delegate { // Perform clean-up actions }; while (true) {} }
Lorsque l'utilisateur appuie sur Ctrl C, le code du délégué s'exécute, lançant le processus de nettoyage et le programme se termine immédiatement.
Cas d'utilisation spécifiques
Dans les scénarios où l'arrêt immédiat des calculs n'est pas souhaitable, une approche alternative est recommandée :
class MainClass { private static bool keepRunning = true; public static void Main(string[] args) { Console.CancelKeyPress += delegate(object? sender, ConsoleCancelEventArgs e) { e.Cancel = true; MainClass.keepRunning = false; }; while (MainClass.keepRunning) { // Perform small chunks of work } Console.WriteLine("exited gracefully"); } }
Cette implémentation définit l'indicateur e.Cancel sur true, empêchant ainsi l'arrêt immédiat du programme. Au lieu de cela, la variable keepRunning est définie sur false, permettant à la boucle while de se terminer une fois les calculs en cours terminés. Cette approche facilite la résiliation gracieuse du programme.
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!