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

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

Barbara Streisand
Barbara StreisandOriginal
2024-12-27 09:38:13987Durchsuche

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

Strg C (SIGINT) in einer C#-Konsolenanwendung abfangen

Um die Unterbrechung einer C#-Konsolenanwendung durch Drücken von Strg C ( SIGINT) kann das Console.CancelKeyPress-Ereignis genutzt werden.

Mit dem Console.CancelKeyPress-Ereignis:

Das Console.CancelKeyPress-Ereignis wird ausgelöst, wenn der Benutzer Strg C drückt. Durch die Registrierung eines Ereignishandlers für dieses Ereignis kann Code ausgeführt werden, bevor das Programm beendet wird.

Console.CancelKeyPress += delegate {
    // Perform cleanup operations
};

Wenn Strg C gedrückt wird, wird der Code im Event-Handler ausgeführt, sodass wichtige Bereinigungsaufgaben abgeschlossen werden können. Es ist wichtig zu beachten, dass kein Code nach dem Delegaten ausgeführt wird.

Umgang mit komplexen Szenarien:

Für Situationen, in denen die sofortige Beendigung einer Aufgabe nicht praktikabel ist, a Es kann ein anderer Ansatz verwendet werden. Der folgende Code zeigt, wie man das Programm anweist, nach Abschluss einer Berechnung ordnungsgemäß zu beenden:

bool keepRunning = true;

Console.CancelKeyPress += delegate(object sender, ConsoleCancelEventArgs e) {
    e.Cancel = true;
    keepRunning = false;
};

while (keepRunning) {
    // Perform work in small chunks
}

Indem Sie e.Cancel auf „true“ setzen, wird die Ausführung nach dem Ereignishandler fortgesetzt. Die Variable keepRunning wird auf „false“ gesetzt, wenn Strg C gedrückt wird, wodurch das Programm ordnungsgemäß beendet wird.

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

Stellungnahme:
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