Lorsque vous travaillez avec des applications console C#, il peut s'avérer nécessaire d'intercepter la frappe Ctrl C (SIGINT) pour effectuez des tâches de nettoyage spécifiques avant la fermeture de l'application. Cet article examine les meilleures pratiques pour capturer SIGINT dans les applications console C#.
L'approche recommandée consiste à s'abonner à l'événement Console.CancelKeyPress, qui se déclenche lorsque le l'utilisateur appuie sur Ctrl C. En fournissant un délégué à cet événement, vous pouvez exécuter du code de nettoyage avant que l'application sorties.
public static void Main(string[] args) { Console.CancelKeyPress += delegate { // Cleanup code }; while (true) {} }
Cependant, cette approche a des limites. Le code placé après le délégué de nettoyage peut ne pas s'exécuter lorsque Ctrl C est enfoncé.
Dans les scénarios où une interruption immédiate n'est pas souhaitable, vous souhaiterez peut-être quitter progressivement le application lorsqu’un calcul ou une tâche est terminé. L'utilisation d'événements set-reset vous permet de contrôler le processus de sortie :
private static bool keepRunning = true; public static void Main(string[] args) { Console.CancelKeyPress += (sender, e) => { e.Cancel = true; keepRunning = false; }; while (keepRunning) { // Task execution } Console.WriteLine("Exited gracefully"); }
Lorsque Ctrl C est enfoncé, e.Cancel est défini sur true, empêchant une sortie immédiate. La variable keepRunning est définie sur false, ce qui entraîne la fin de la boucle while une fois la tâche en cours terminée. Cela permet à l'application de se fermer normalement.
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!