Bei der Arbeit mit C#-Konsolenanwendungen kann es erforderlich sein, den Tastendruck Strg C (SIGINT) abzufangen Führen Sie bestimmte Bereinigungsaufgaben durch, bevor die Anwendung beendet wird. Dieser Artikel befasst sich mit den Best Practices für die Erfassung von SIGINT in C#-Konsolenanwendungen.
Der empfohlene Ansatz besteht darin, das Console.CancelKeyPress-Ereignis zu abonnieren, das ausgelöst wird, wenn das Der Benutzer drückt Strg C. Durch die Bereitstellung eines Delegaten für dieses Ereignis können Sie Bereinigungscode vor der Anwendung ausführen Ausgänge.
public static void Main(string[] args) { Console.CancelKeyPress += delegate { // Cleanup code }; while (true) {} }
Dieser Ansatz weist jedoch Einschränkungen auf. Nach dem Bereinigungsdelegaten platzierter Code wird möglicherweise nicht ausgeführt, wenn Strg C gedrückt wird.
In Szenarien, in denen eine sofortige Unterbrechung unerwünscht ist, möchten Sie möglicherweise den ordnungsgemäß beenden Anwendung, wenn eine Berechnung oder Aufgabe abgeschlossen ist. Durch die Verwendung von Set-Reset-Ereignissen können Sie den Beendigungsprozess steuern:
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"); }
Wenn Strg C gedrückt wird, wird e.Cancel auf „true“ gesetzt, wodurch ein sofortiges Beenden verhindert wird. Die Variable keepRunning wird auf „false“ gesetzt, was dazu führt, dass die while-Schleife beendet wird, nachdem die aktuelle Aufgabe abgeschlossen ist. Dadurch kann die Anwendung ordnungsgemäß beendet werden.
Das obige ist der detaillierte Inhalt vonWie kann ich Strg C (SIGINT) in einer C#-Konsolenanwendung ordnungsgemäß handhaben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!