555 Stimmen

Wie kann ich eine WPF-Anwendung programmgesteuert beenden?

Wie soll man eine Anwendung beenden, wenn der Benutzer z. B. auf den Menüpunkt Beenden im Menü Datei klickt?

Ich habe es versucht:

this.Dispose();
this.Exit();
Application.ShutDown();
Application.Exit();
Application.Dispose();

Neben vielen anderen. Nichts funktioniert.

883voto

Dirk Vollmar Punkte 166522

Um Ihre Anwendung zu beenden, können Sie

System.Windows.Application.Current.Shutdown();

Wie in der Dokumentation zum Application.Shutdown Methode können Sie auch das Abschaltverhalten Ihrer Anwendung ändern, indem Sie eine ShutdownMode :

Shutdown wird von Windows Presentation Foundation (WPF) in den folgenden Situationen implizit aufgerufen:

  • Wenn ShutdownMode auf OnLastWindowClose gesetzt ist.
  • Wenn der ShutdownMode auf OnMainWindowClose gesetzt ist.
  • Wenn ein Benutzer eine Sitzung beendet und das SessionEnding-Ereignis entweder unbehandelt oder ohne Abbruch behandelt wird.

Bitte beachten Sie auch, dass Application.Current.Shutdown(); darf nur von dem Thread aufgerufen werden, der die Application Objekt, d.h. normalerweise der Hauptthread.

189voto

John Punkte 6253

Wenn Sie wirklich abschließen müssen, können Sie auch Umgebung.Beenden() aber es ist überhaupt nicht elegant (es ist eher wie das Beenden des Prozesses).

Verwenden Sie es wie folgt:

Environment.Exit(0)

82voto

Allen Pestaluky Punkte 1896

En wuminqi sagte , Application.Current.Shutdown(); ist unumkehrbar und wird in der Regel verwendet, um das Schließen einer Anwendung zu erzwingen, z. B. wenn sich ein Benutzer abmeldet oder Windows herunterfährt.

Rufen Sie stattdessen this.close() in Ihrem Hauptfenster. Dies ist dasselbe wie das Drücken von Alt + F4 oder die Schaltfläche [x] im Fenster schließen. Dies führt dazu, dass alle anderen eigenen Fenster geschlossen werden und ruft schließlich Application.Current.Shutdown(); solange die Abschlussaktion nicht abgebrochen wurde. Bitte lesen Sie die MSDN-Dokumentation zu Ein Fenster schließen .

Auch, weil this.close() abbrechbar ist, können Sie einen Bestätigungsdialog zum Speichern von Änderungen in den Ereignis-Handler zum Schließen einfügen. Erstellen Sie einfach einen Eventhandler für <Window Closing="..."> und Veränderung e.Cancel entsprechend. (Siehe die MSDN-Dokumentation für weitere Einzelheiten zu diesem Vorgang).

40voto

Kylo Ren Punkte 8048

Verwenden Sie je nach Bedarf eine der folgenden Möglichkeiten:

1.

 App.Current.Shutdown();
OR
 Application.Current.Shutdown();

2.

 App.Current.MainWindow.Close();
OR
 Application.Current.MainWindow.Close();

Alle Methoden rufen vor allem closing event de Window Klasse und die Ausführung kann an einem bestimmten Punkt stoppen (denn normalerweise stellen Anwendungen Dialoge wie 'Sind Sie sicher?' oder Möchten Sie die Daten vor dem Schließen speichern? ', bevor ein Fenster vollständig geschlossen wird)

3. Wenn Sie aber die Anwendung beenden wollen ohne jede Vorwarnung sofort. Unten verwenden

   Environment.Exit(0);

29voto

Brian MacKay Punkte 29566

Damit sollte es klappen:

Application.Current.Shutdown();

Wenn Sie daran interessiert sind, finden Sie hier zusätzliches Material, das ich hilfreich fand:

Details zu Bewerbung.Aktuell

Lebenszyklus von WPF-Anwendungen

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X