Richtiger Weg zu schließen WPF GUI-Anwendung: GetCurrentProcess () kill (), Environment.Exit (0) oder this.Shutdown ().

StackOverflow https://stackoverflow.com/questions/3880836

Frage

Mein GUI Desktop-basierte WPF 4.0 (C # .NET 4.0) Programm funktioniert mit SQL Server-Datenbank. Jedes Mal, wenn ich meine Anwendung ausführen erstellt es eine Verbindung zu SQL Server über ADO.NET Entity Framework und wenn SQL Server nicht erreichbar ist es löst eine Ausnahme und zeigt MessageBox mit Anmeldung.

Jetzt möchte ich, dass nach Benutzer diese Nachricht Anwendung gelesen wird heruntergefahren. Ich fand drei Möglichkeiten, dies zu tun:

Process.GetCurrentProcess().Kill();

oder

this.Shutdown(); // Application.Current.Shutdown()

oder

System.Environment.Exit(0);

Alle von ihnen arbeiten gut und tun, was ich brauche -. Schließe die Anwendung und Prozess der Abtötung Anwendung in Windows Task-Manager

Ich möchte wissen:

  1. Was ist der Unterschied zwischen ihnen?
  2. Welche Art und Weise wird meine Anwendung schließen schneller?
  3. Welche Art und Weise zu schließen Anwendung soll ich verwenden?
  4. Ist Application.Current.Shutdown() und this.Shutdown() die gleiche Art und Weise zu schließen Anwendung?

Oder vielleicht gibt es eine andere, besser geeignet, Art und Weise eine WPF-GUI-Anwendung zu schließen?

Application.Exit() hat bei mir nicht funktioniert, wie ich den Fehler:

  

Das Ereignis ‚System.Windows.Application.Exit‘ kann nur erscheinen auf der linken Seite von + = oder - =

Danke.

War es hilfreich?

Lösung

Application.Current.Shutdown() ist der richtige Weg, eine Anwendung zur Abschaltung. Im Allgemeinen, weil Feuer der Exit-Ereignisse, die Sie behandeln können mehr

Process.GetCurrentProcess().Kill() sollte verwendet werden, wenn Sie die Anwendung töten wollen. mehr

Ad1. Die Art dieser Methoden sind völlig verschieden. Der Shutdown-Prozess kann angehalten werden, um einige Operationen zu beenden, töten zu schließen, die Anwendung erzwingen.

Ad2. Wahrscheinlich Kill() wird der schnellste Weg sein, aber das ist so etwas wie Kernel-Panik.

Ad3. Shutdown, weil es löst das Ereignis close

Ad4. Das abhängen, was this ist.

Andere Tipps

  

Mit Application.Current.Shutdown ();

     

In Shutdown = "OnMainWindowClose" in App.xaml

private void ExitMenu_Click(object sender, RoutedEventArgs e)
    {
        Application.Current.Shutdown();
    }

@Damian Leszczynski - Vash Antwort ziemlich deckt die vier spezifische Fragen Sie. Für Ihre letzte Frage auf Application.Exit(), dass ein Ereignis sind Sie, nicht eine Methode abonnieren können, dass Sie anrufen können. Es sollte wie folgt verwendet werden:

Application.Current.Exit += CurrentOnExit; 
//this.Exit += CurrentOnExit; would also work if you're in your main application class

...

private void CurrentOnExit(object sender, ExitEventArgs exitEventArgs)
{
    //do some final stuff here before the app shuts down
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top