如何強制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