Heim > Backend-Entwicklung > C++ > Wie kann ich Strg-C-Interrupts in C#-Konsolenanwendungen ordnungsgemäß behandeln?

Wie kann ich Strg-C-Interrupts in C#-Konsolenanwendungen ordnungsgemäß behandeln?

Susan Sarandon
Freigeben: 2024-12-30 20:52:14
Original
442 Leute haben es durchsucht

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

Umgang mit Strg C (SIGINT) in C#-Konsolenanwendungen

In C# ermöglicht das Einfangen von Strg C (SIGINT) notwendige Bereinigungen vor dem ordnungsgemäßen Beenden eine Konsolenanwendung. Das Console.CancelKeyPress-Ereignis bietet eine Möglichkeit, mit dieser Unterbrechung umzugehen.

Console.CancelKeyPress verwenden

Der folgende Code zeigt, wie das CancelKeyPress-Ereignis verwendet wird:

public static void Main(string[] args)
{
    Console.CancelKeyPress += delegate {
        // Perform clean-up actions
    };

    while (true) {}
}
Nach dem Login kopieren

Wenn der Benutzer Strg C drückt, wird der Delegatencode ausgeführt, der Bereinigungsprozess eingeleitet und das Programm beendet sofort.

Spezifische Anwendungsfälle

In Szenarien, in denen eine sofortige Beendigung der Berechnungen unerwünscht ist, wird ein alternativer Ansatz empfohlen:

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");
    }
}
Nach dem Login kopieren

Diese Implementierung Setzt das e.Cancel-Flag auf „true“ und verhindert so die sofortige Beendigung des Programms. Stattdessen wird die Variable keepRunning auf „false“ gesetzt, sodass die while-Schleife beendet werden kann, nachdem alle laufenden Berechnungen abgeschlossen sind. Dieser Ansatz erleichtert eine ordnungsgemäße Programmbeendigung.

Das obige ist der detaillierte Inhalt vonWie kann ich Strg-C-Interrupts in C#-Konsolenanwendungen ordnungsgemäß behandeln?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage