如何强制ShowDialog
从后台线程返回?WPF - 强制ShowDialog返回
我有一个基于C++/CLR框架构建的WPF应用程序,该框架正在监听框架发送的消息。一条特别的信息非常重要,我需要关闭所有当前的窗口。但是,如果模式Dialog
(由我的主窗口中的ShowDialog
创建)处于活动状态并等待用户输入,则该窗口将不会关闭,因为它正在等待ShowDialog
返回。如何强制模式Dialog
关闭和展开代码执行?
我尝试设置DialogResult
或致电Close
但是,似乎没有工作。
编辑:Dialog
是由一个希望返回值,像这样我的主窗口中创建: (在MainWindow
点击事件处理中):
Window modalDialog = new Window();
bool ret = (bool)modalDialog.ShowDialog();
if (ret == true)
{
// do stuff
}
else
{
// do some other stuff
}
当框架发送消息(未来在与UI线程不同的线程上),我打电话MainWindow.Close()
。此时模式对话框会关闭,但检查Dialog
返回值(在ShowDialog
之后)的代码仍在堆栈中。不知何故,这迫使主窗口不消失。
我编辑了我的原始问题,以表明ShowDialog预计会返回一个值,并且父窗口应该使用该值执行一些处理... – Hypherion 2010-01-11 19:44:26