Maison > développement back-end > C++ > Comment puis-je gérer efficacement les interruptions Ctrl C dans les applications console C# ?

Comment puis-je gérer efficacement les interruptions Ctrl C dans les applications console C# ?

Susan Sarandon
Libérer: 2024-12-30 20:52:14
original
443 Les gens l'ont consulté

How Can I Gracefully Handle Ctrl C Interrupts in C# Console Applications?

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) {}
}
Copier après la connexion

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");
    }
}
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal