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