WPF跨线程MessageBox不阻塞主线程输入

时间:2016-01-22 15:25:24

标签: c# wpf multithreading

我正在尝试使用Dispatcher.Invoke显示来自其他MessageBox的{​​{1}}。

Thread确实出现了。但是,如果不点击MessageBox上的OK按钮,我仍然可以控制主窗口。

我在想是否有办法在点击MessageBox按钮之前阻止主窗口输入?

感谢任何帮助。

我到目前为止的代码:

OK

1 个答案:

答案 0 :(得分:8)

确保消息框阻止窗口的唯一方法是将窗口传递到消息框。

void ShowError(String message, Window windowToBlock)  //I call this function in another thread
{
    if (this.Dispatcher.CheckAccess())
        MessageBox.Show(windowToBlock, message, "Error", MessageBoxButton.OK, MessageBoxImage.Error);
    else
    {
        this.Dispatcher.Invoke(
            new Action(() =>
            {
                MessageBox.Show(windowToBlock, message, "Error", MessageBoxButton.OK, MessageBoxImage.Error);
            }));
    }
}