manera correcta de cerca la aplicación de WPF GUI: GetCurrentProcess () Mata (), Environment.Exit (0) o this.Shutdown ().

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

Pregunta

Mi escritorio GUI basada funciona el programa WPF 4.0 (C # .Net 4.0) con la base de datos de SQL Server. Cada vez cuando corro mi aplicación que crea una conexión a SQL Server a través de ADO.NET Entity Framework y si SQL Server no es accesible lanza una excepción y espectáculos MessageBox con la notificación.

Ahora quiero que después de leer esta aplicación el usuario mensaje se apagará. He encontrado tres maneras de hacer esto:

Process.GetCurrentProcess().Kill();

o

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

o

System.Environment.Exit(0);

Todas ellas funcionan bien y hacer lo que necesito -. Cierra la aplicación y el proceso de aplicación de matar en el Administrador de tareas de Windows

Quiero saber:

  1. ¿Cuál es la diferencia entre ellos?
  2. ¿Qué camino va a cerrar mi solicitud más rápido?
  3. ¿Qué manera de cerrar la aplicación se debe usar?
  4. ¿Es Application.Current.Shutdown() y this.Shutdown() la misma manera de cerrar aplicación?

O tal vez hay otro, más adecuado, forma de cerrar una aplicación WPF GUI?

No hace Application.Exit() trabajo para mí, como me sale el error:

  

El evento 'System.Windows.Application.Exit' sólo puede aparecer en el lado izquierdo de + = o - =

Gracias.

¿Fue útil?

Solución

Application.Current.Shutdown() es la forma correcta de apagar una aplicación. En general, debido a los acontecimientos de bomberos de la salida que se puede manejar más

Process.GetCurrentProcess().Kill() se debe utilizar cuando se quiere matar a la aplicación. más

Ad1. La naturaleza de estos métodos son totalmente diferentes. El proceso de apagado se puede pausar para poner fin a algunas operaciones, matar a forzar el cierre de una aplicación.

Ad2. Probablemente Kill() será la manera más rápida, pero esto es algo así como pánico del kernel.

Ad3. Apagado, ya que dispara el evento de cierre

Anuncio4. Eso depende de lo que es this.

Otros consejos

  

Use Application.Current.Shutdown ();

     

Añadir ShutdownMode = "OnMainWindowClose" en App.xaml

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

@Damian Leszczynski - La respuesta de Vash bastante bien cubiertas las 4 preguntas específicas que les pide. Para su última pregunta sobre Application.Exit(), que es un evento que puede suscribirse a, no es un método que se puede llamar. Se debe utilizar la siguiente manera:

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
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top