Bonne façon de fermer l'application GUI WPF: GetCurrentProcess () Kill (), Environment.Exit (0) ou this.Shutdown ().

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

Question

Mon interface desktop-base WPF 4.0 (C # .Net 4.0) programme fonctionne avec la base de données SQL Server. Chaque fois que je lance mon application, il crée une connexion à SQL Server via ADO.NET Entity Framework et si SQL Server est accessible pas une exception et jette des spectacles MessageBox avec notification.

Maintenant, je veux que, après lecture de cette application de messagerie utilisateur arrêté. J'ai trouvé trois façons de le faire:

Process.GetCurrentProcess().Kill();

ou

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

ou

System.Environment.Exit(0);

Toutes les fins de travail et faire ce que je dois -. Et fermer l'application du processus de l'application kill dans le Gestionnaire des tâches de Windows

Je veux savoir:

  1. Quelle est la différence entre eux?
  2. Dans quel sens va fermer mon application plus rapidement?
  3. Quelle façon de fermer l'application dois-je utiliser?
  4. est Application.Current.Shutdown() et this.Shutdown() la même manière à fermer l'application?

Ou peut-être il y a un autre, plus approprié, moyen de fermer une application GUI WPF?

Application.Exit() ne fonctionne pas pour moi que je reçois l'erreur:

  

L'événement « System.Windows.Application.Exit » ne peut apparaître sur le côté gauche de + = ou - =

Merci.

Était-ce utile?

La solution

Application.Current.Shutdown() est la bonne façon d'arrêter une des applications. En général, parce que le feu les événements de sortie que vous pouvez gérer plus

Process.GetCurrentProcess().Kill() doit être utilisé lorsque vous voulez tuer l'application. plus

Ad1. La nature de ces méthodes sont totalement différentes. Le processus d'arrêt peut être mis en pause pour mettre fin à certaines opérations, tuer forcer l'application à proximité.

Ad2. Probablement Kill() sera le plus rapide, mais cela est quelque chose comme la panique du noyau.

Ad3. Arrêt car il déclenche l'événement proche

Annonce4. Cela dépend ce que this est.

Autres conseils

  

Utilisation Application.Current.Shutdown ();

     

Ajouter ShutdownMode = "OnMainWindowClose" App.xaml

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

@Damian Leszczynski - La réponse de Vash couvre à peu près les 4 questions spécifiques que vous demandé. Pour votre dernière question Application.Exit(), qui est un événement auquel vous pouvez vous abonner à, pas une méthode que vous pouvez appeler. Il devrait être utilisé comme ceci:

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
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top