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) {} }
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"); } }
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!