c# - container - tooltip wpf
Forma correcta de cerrar la aplicación WPF GUI: GetCurrentProcess(). Kill(), Environment.Exit(0) o this.Shutdown() (4)
Mi GUI basado en escritorio WPF 4.0 (C # .Net 4.0) funciona con la base de datos de SQL Server. Cada vez que ejecuto mi aplicación, crea una conexión con SQL Server a través de ADO.NET Entity Framework y, si SQL Server no es accesible, arroja una excepción y muestra MessageBox con notificación.
Ahora quiero que después de que el usuario lea este mensaje, la aplicación se cierre. Encontré tres formas de hacer esto:
Process.GetCurrentProcess().Kill();
o
this.Shutdown(); // Application.Current.Shutdown()
o
System.Environment.Exit(0);
Todos funcionan bien y hacen lo que necesito: cierre la aplicación y elimine el proceso de la aplicación en el Administrador de tareas de Windows.
Quiero saber:
- ¿Cuál es la diferencia entre ellos?
- ¿De qué manera cerraré mi aplicación más rápido?
- ¿Qué forma de cerrar la aplicación debería usar?
- ¿Es
Application.Current.Shutdown()
ythis.Shutdown()
la misma manera de cerrar la aplicación?
¿O tal vez hay otra forma más adecuada de cerrar una aplicación WPF GUI?
Application.Exit()
no funciona para mí ya que recibo el error:
El evento ''
System.Windows.Application.Exit
'' solo puede aparecer en el lado izquierdo de + = o - =
Gracias.
Use Application.Current.Shutdown ();
Agregar ShutdownMode = "OnMainWindowClose" en App.xaml
private void ExitMenu_Click(object sender, RoutedEventArgs e)
{
Application.Current.Shutdown();
}
@Damian Leszczyński - La respuesta de Vash cubre prácticamente las 4 preguntas específicas que usted hizo. Para su última pregunta en Application.Exit()
, es un evento al que puede suscribirse, no un método al que puede llamar. Debería usarse así:
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
}
Application.Current.Shutdown()
es la forma correcta de cerrar una aplicación. En general, porque dispara los eventos de salida que puedes manejar más
Process.GetCurrentProcess().Kill()
debería usarse cuando quieras matar la aplicación. Más
Ad1. La naturaleza de esos métodos es totalmente diferente. El proceso de apagado se puede pausar para finalizar algunas operaciones, matar a la aplicación para que se cierre.
Ad2. Probablemente Kill()
sea la forma más rápida, pero esto es algo así como el pánico del kernel.
Ad3. Apagado porque dispara el evento cerrado
Ad4. Eso depende de lo que sea this
.