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

Mon programme WPF 4.0 (C # .Net 4.0) basé sur une interface graphique fonctionne avec la firebase database SQL Server. Chaque fois que j’exécute mon application, il crée une connexion à SQL Server via ADO.NET Entity Framework et si SQL Server n’est pas accessible, il génère une exception et affiche MessageBox avec notification.

Maintenant, je souhaite que l’utilisateur lise cette application de message va se fermer. J’ai trouvé trois façons de le faire:

Process.GetCurrentProcess().Kill(); 

ou

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

ou

 System.Environment.Exit(0); 

Tous fonctionnent bien et font ce dont j’ai besoin: fermez l’application et éliminez le processus de l’application dans le Gestionnaire des tâches Windows.

Je veux savoir:

  1. Quelle est la différence entre eux?
  2. De quelle manière fermera-t-il mon application plus rapidement?
  3. Comment fermer l’application dois-je utiliser?
  4. Application.Current.Shutdown() et this.Shutdown() -ils identiques pour fermer l’application?

Ou peut-être existe-t-il un autre moyen plus approprié de fermer une application d’interface graphique WPF?

Application.Exit() ne fonctionne pas pour moi car j’obtiens l’erreur:

L’événement ‘ System.Windows.Application.Exit ‘ ne peut apparaître que sur le côté gauche de + = ou – =

Merci.

Application.Current.Shutdown() est le moyen approprié pour arrêter une application. Généralement parce que déclencher 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 est totalement différente. Le processus d’arrêt peut être interrompu pour mettre fin à certaines opérations, et forcer la fermeture de l’application.

Ad2. Probablement Kill() sera le moyen le plus rapide, mais c’est quelque chose comme la panique du kernel.

Ad3. Arrêt car il déclenche l’événement de clôture

Ad4. Cela dépend de ce que c’est.

Utilisez Application.Current.Shutdown ();

Ajouter ShutdownMode = “OnMainWindowClose” dans App.xaml

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

@ Damian Leszczyński – La réponse de Vash couvre à peu près les 4 questions spécifiques que vous avez posées. Pour votre dernière question sur Application.Exit() , c’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 }