Aquí hay un fragmento de código en el que aparece un cuadro de diálogo simple ("selector"). Según la entrada del usuario, la aplicación puede finalizar.¿Por qué mi programa C# WPF sigue ejecutando líneas después de Application.Shutdown()?
DPChooser chooser = new DPChooser(dataProvider);
if (chooser.ShowDialog() == false)
Application.Current.Shutdown(0);
else
ApplicationContext.Current.InitializeDataProviderAPI(chooser.DataProvider);
}
// more code continues here
// THE PROBLEM:
// Even when Shutdown() above is called,
// the execution continues proceeding past here!
me he encontrado en un depurador, por lo que saben que el si está evaluando a falso, y yo saben que apagado() que se está llamando.
Entonces, ¿por qué no se apaga?
Nota: creo que no es una cosa de enhebrar. Todavía no estoy comenzando nada en otros hilos. Incluso si el enhebrado estaba involucrado, aún no esperaba que el código en este hilo siguiera pasando por Shutdown().
Je, eso no es tan intuitivo. Sin embargo, debería haber pensado en regresar allí, sin importarme nada. Gracias. –
Espere, los documentos de Shutdown (int exitCode) indican que exitCode se devuelve al sistema operativo. Si este método no mata a la aplicación, ¿cómo puede la aplicación usarla para devolver este exitCode? –
@GrantB Es un apagado controlado, que no detiene el hilo de ejecución. Si usa la tubería WPF predeterminada, este código de salida es lo que se devuelve desde el punto de entrada, pero ocurre después de que se ejecuta todo lo demás (como ha descubierto aquí). –