我有以下情况:
稍后,模式对话框需要在上面那个窗口出现;所以我正在做以下事情:
OptionalMessageBox message = new OptionalMessageBox(title, errorMessage.ToString(), MessageImage.Warning);
if (UIUtilities.TopWindow != null)
{
UIUtilities.TopWindow.Dispatcher.Invoke(() => message.Owner = UIUtilities.TopWindow);
UIUtilities.TopWindow.Dispatcher.Invoke(() => message.ShowDialog());
}
else
{
message.ShowDialog();
}
然而,这是经典的'调用线程无法访问此对象,因为另一个线程拥有它'虽然我不明白为什么我使用TopWindow变量的调度程序。作为一个注释(并且出于绝望),我尝试将调用放在我刚刚创建的消息变量上 - 这也没有用,但我没想到会成为问题,因为我现在如何拥有它如果我刚刚做完了!
非常感谢任何建议。
答案 0 :(得分:0)
试试这个:
if (UIUtilities.TopWindow != null)
{
UIUtilities.TopWindow.Dispatcher.Invoke(() => {
OptionalMessageBox message = new OptionalMessageBox(title, errorMessage.ToString(), MessageImage.Warning);
message.Owner = UIUtilities.TopWindow;
message.ShowDialog();
});
}
else
{
OptionalMessageBox message = new OptionalMessageBox(title, errorMessage.ToString(), MessageImage.Warning);
message.ShowDialog();
}
答案 1 :(得分:0)
您可以使用此
App.Current.Dispatcher.Invoke(() => {
OptionalMessageBox message = new OptionalMessageBox(title, errorMessage.ToString(), MessageImage.Warning);
message.Owner = App.Current.MainWindow;
message.ShowDialog();
});