Как я могу заставить ShowDialog
вернуться из фонового потока?
У меня есть приложение WPF, построенное поверх платформы C ++ / CLR, которая прослушивает сообщения, отправленные средой. Одно конкретное сообщение настолько важно, что мне нужно закрыть все текущие окна. Однако, если модальный Dialog
(созданный ShowDialog
из моего главного окна) активен и ожидает ввода пользователя, окно не закроется, потому что он ожидает возврата ShowDialog
. Как я могу заставить модальное Dialog
закрыть и развернуть выполнение кода?
Я попытался установить DialogResult
или вызвать Close
, но это не сработало.
Edit: Dialog
создается моим главным окном, которое ожидает возвращаемое значение, например так:
(внутри обработчика события щелчка в MainWindow
):
Window modalDialog = new Window();
bool ret = (bool)modalDialog.ShowDialog();
if (ret == true)
{
// do stuff
}
else
{
// do some other stuff
}
Когда платформа отправляет сообщение (входящее в поток, отличный от потока пользовательского интерфейса), я вызываю MainWindow.Close()
. На этом этапе модальное диалоговое окно закрывается, однако код, проверяющий возвращаемое значение Dialog
(после ShowDialog
), все еще находится в стеке. Каким-то образом это заставляет главное окно не исчезать.