¿Cómo puedo forzar que ShowDialog
regrese de un hilo de fondo?WPF - Force ShowDialog para devolver
Tengo una aplicación WPF construida sobre un marco C++/CLR que está escuchando mensajes enviados por el marco. Un mensaje en particular es tan importante que necesito cerrar todas las ventanas actuales. Sin embargo, si un modal Dialog
(creado por ShowDialog
desde mi ventana principal) está activo y esperando la entrada del usuario, la ventana no se cerrará porque está esperando que regrese el ShowDialog
. ¿Cómo puedo forzar el modal Dialog
para cerrar y desenrollar la ejecución del código?
Intenté configurar el DialogResult
o llamando al Close
sin embargo, eso no parece funcionar.
Editar: El Dialog
es creado por mi ventana principal, que espera un valor de retorno, así: (dentro de un controlador de eventos click en MainWindow
):
Window modalDialog = new Window();
bool ret = (bool)modalDialog.ShowDialog();
if (ret == true)
{
// do stuff
}
else
{
// do some other stuff
}
Cuando el marco envía un mensaje (que entra en un hilo diferente que el hilo de UI), llamo al MainWindow.Close()
. El diálogo modal se cierra en este punto, sin embargo, el código que verifica el valor de retorno de Dialog
(después de ShowDialog
) todavía está en la pila. De alguna manera esto obliga a que la ventana principal no desaparezca.
Modifiqué mi pregunta original para indicar que se esperaba que ShowDialog devolviera un valor y se supone que la ventana principal debe hacer algún procesamiento con el valor ... – Hypherion