container c# wpf database exception-handling close-application

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:

  1. ¿Cuál es la diferencia entre ellos?
  2. ¿De qué manera cerraré mi aplicación más rápido?
  3. ¿Qué forma de cerrar la aplicación debería usar?
  4. ¿Es Application.Current.Shutdown() y this.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 .