WPF 跨线程消息框不阻止主线程输入

本文关键字:线程 输入 消息 WPF | 更新日期: 2023-09-27 18:31:31

我正在尝试使用 Dispatcher.Invoke 显示来自另一个ThreadMessageBox

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

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

任何帮助,不胜感激。

到目前为止,我拥有的代码:

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

WPF 跨线程消息框不阻止主线程输入

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

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);
            }));
    }
}