首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么System.Windows.MessageBox滞后于WPF窗口?

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

Stack Overflow用户
提问于 2012-09-12 19:23:59
回答 2查看 2.1K关注 0票数 3

考虑以下代码:

代码语言:javascript
复制
private void Window_Loaded(object sender, RoutedEventArgs e)
{
    MessageBox.Show("MyMessage");
}

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

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

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-09-12 19:47:50

MessageBoxNormal DispatcherPriority中显示,它发生在DataBindRenderLoaded等东西之前,因此,初始化窗口对象的代码直到取消MessageBox之后才能运行。

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

代码语言:javascript
复制
private void Window_Loaded(object sender, RoutedEventArgs e)
{
    InitializeComponent();

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

Stack Overflow用户

发布于 2012-09-12 19:38:05

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12394913

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档