如何强制ShowDialog
从后台线程返回?
我有一个构建在 C++/CLR 框架之上的 WPF 应用程序,它正在侦听框架发送的消息。一条特定的消息非常重要,以至于我需要关闭所有当前窗口。但是,如果模式Dialog
(由ShowDialog
我的主窗口创建)处于活动状态并等待用户输入,则窗口不会关闭,因为它正在等待ShowDialog
返回。如何强制模式Dialog
关闭和展开代码执行?
我尝试设置DialogResult
or 调用Close
,但这似乎不起作用。
编辑:Dialog
由我的主窗口创建,它需要一个返回值,如下所示:(在 click 事件处理程序中MainWindow
):
Window modalDialog = new Window();
bool ret = (bool)modalDialog.ShowDialog();
if (ret == true)
{
// do stuff
}
else
{
// do some other stuff
}
当框架发送消息(来自与 UI 线程不同的线程)时,我调用MainWindow.Close()
. 此时模态对话框关闭,但是检查Dialog
(after ShowDialog
) 的返回值的代码仍在堆栈上。不知何故,这迫使主窗口不消失。