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

时间:2012-09-12 19:23:59

标签: c# wpf window messagebox

请考虑以下代码:

private void Window_Loaded(object sender, RoutedEventArgs e)
{
    MessageBox.Show("MyMessage");
}

如果我在加载WPF窗口后尝试显示消息框,当我运行应用程序时,WPF窗口会显示透明背景(只有非客户区域可见)并且需要3- 5秒,直到出现消息框。只有在消息框关闭后,WPF窗口才会恢复正常。

这是正常的吗?有没有其他人经历过这个?

编辑:我添加了窗口的截图:

enter image description here

2 个答案:

答案 0 :(得分:7)

MessageBox Normal会显示在DataBind DispatcherPriority之前,RenderLoadedMessageBox之类在您关闭MessageBox

之后,初始化Window对象的代码才会运行

您可以通过在稍后的DispatcherPriority中显示Background来解决此问题,例如private void Window_Loaded(object sender, RoutedEventArgs e) { InitializeComponent(); this.Dispatcher.BeginInvoke(DispatcherPriority.Background, new Action(delegate() { MessageBox.Show("MyMessage"); })); }

{{1}}

答案 1 :(得分:0)

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