c# wpf application-shutdown

c# - Cerrar una aplicación WPF de App.xaml.cs



application-shutdown (2)

Actualmente estoy escribiendo una aplicación WPF que maneja los argumentos de línea de comandos en App.xaml.cs (que es necesario porque el evento de inicio parece ser la forma recomendada de obtener esos argumentos). Basado en los argumentos que quiero salir del programa en ese momento, que, hasta donde yo sé, debería hacerse en WPF con Application.Current.Shutdown() o en este caso (como estoy en el objeto de la aplicación actual) probablemente también solo this.Shutdown() . this.Shutdown() .

El único problema es que esto no parece funcionar bien. He avanzado con el depurador y el código después de que la línea Shutdown() todavía se ejecuta, lo que lleva a errores posteriores en el método, ya que esperaba que la aplicación no durara tanto. Además, la ventana principal (declarada en el atributo StartupUri en XAML) aún se carga.

Revisé la documentación de ese método y no encontré nada en los comentarios que me indiquen que no debo usarlo durante Application.Startup o Application en absoluto.

Entonces, ¿cuál es la forma correcta de salir del programa en ese punto, i. mi. el controlador de eventos de Startup en un objeto Application ?


Primero elimine la propiedad StartupUri de App.xaml y luego use lo siguiente:

protected override void OnStartup(StartupEventArgs e) { base.OnStartup(e); bool doShutDown = ...; if (doShutDown) { Shutdown(1); return; } else { this.StartupUri = new Uri("Window1.xaml", UriKind.Relative); } }


Si elimina el StartupUri de app.xaml para una aplicación con MainWindow, debe asegurarse de realizar la siguiente llamada en su método OnStartup; de lo contrario, la aplicación no terminará cuando se cierre MainWindow.

this.ShutdownMode = System.Windows.ShutdownMode.OnMainWindowClose;

@Frank Schwieterman, algo similar a esto puede ayudarlo con el problema de la ventana de la consola.