Mon programme de bureau graphique WPF 4.0 (C # .Net 4.0) fonctionne avec la base de données 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 lève une exception et affiche MessageBox
avec notification.
Maintenant, je veux qu'après que l'utilisateur ait lu ce message, l'application se fermera. J'ai trouvé trois façons de procéder:
Process.GetCurrentProcess().Kill();
ou
this.Shutdown(); // Application.Current.Shutdown()
ou
System.Environment.Exit(0);
Tous fonctionnent bien et font ce dont j'ai besoin - fermer l'application et tuer le processus de l'application dans le Gestionnaire des tâches de Windows.
Je veux savoir:
Application.Current.Shutdown()
et this.Shutdown()
sont-ils de la même manière pour fermer l'application?Ou peut-être existe-t-il un autre moyen plus approprié de fermer une application 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éclenchez 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, tuer forcer l'application à se fermer.
Ad2. Kill()
sera probablement le moyen le plus rapide, mais c'est quelque chose comme la panique du noyau.
Ad3. Arrêter car il déclenche l'événement de fermeture
Ad4. Cela dépend de ce que this
.
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
}