C# 为什么System.Windows.MessageBox滞后于WPF窗口?

C# 为什么System.Windows.MessageBox滞后于WPF窗口?,c#,wpf,window,messagebox,C#,Wpf,Window,Messagebox,考虑以下代码: private void Window_Loaded(object sender, RoutedEventArgs e) { MessageBox.Show("MyMessage"); } 如果在加载WPF窗口后尝试显示消息框,则在运行应用程序时,WPF窗口将以透明背景显示(只有非客户端区域可见),直到消息框出现需要3-5秒。只有在消息框关闭后,WPF窗口才会恢复正常 这正常吗?还有其他人经历过吗 编辑:我添加了窗口外观的屏幕截图: 尝试重载Show方法,或任何其他重载

考虑以下代码:

private void Window_Loaded(object sender, RoutedEventArgs e)
{
    MessageBox.Show("MyMessage");
}
如果在加载WPF窗口后尝试显示消息框,则在运行应用程序时,WPF窗口将以透明背景显示(只有非客户端区域可见),直到消息框出现需要3-5秒。只有在消息框关闭后,WPF窗口才会恢复正常

这正常吗?还有其他人经历过吗

编辑:我添加了窗口外观的屏幕截图:


尝试重载
Show
方法,或任何其他重载,接受
窗口
实例作为参数。

正常
处显示
消息框
,它出现在
数据绑定
渲染
加载
之前,因此,初始化窗口对象的代码只有在您关闭
MessageBox

您可以通过在稍后的DispatcherPriority(例如
Background
)中简单地显示
MessageBox
来解决此问题

private void Window_Loaded(object sender, RoutedEventArgs e)
{
    InitializeComponent();

    this.Dispatcher.BeginInvoke(DispatcherPriority.Background, 
        new Action(delegate() { MessageBox.Show("MyMessage"); }));
}

你在用哪一个消息框?@Bob<代码>系统.窗口.消息框根据问题标题。实际上,有人发布了一个(现已删除)答案,以确保您使用的是
System.Windows
而不是
System.Windows.Forms
,因为
System.Windows.Forms
提取了WPF通常不需要的几个DLL,OP验证了它们正在使用
System.Windows.MessageBox