我有一个WPF应用程序,需要一段时间才能关闭所以我想添加一个'请等待'对话框,以便在主窗体关闭时显示。但是,当我将'formmessage.show'添加到我的主窗体的结束事件处理程序时,表单显示但不是“请稍候”文本,我得到的只是一个白色矩形。这似乎只是在从关闭处理程序调用此代码时发生。它可以从其他处理程序(单击或最大化)工作正常。有人可以帮忙吗?这是我的简化代码:
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e)
{
Form1 f = new Form1();
f.Show();
System.Threading.Thread.Sleep(3000);
}
}
Form1上有一个标签,上面写着“请稍等”。
答案 0 :(得分:2)
试试:
Application.Current.Dispatcher.Invoke(
DispatcherPriority.Normal,
new Action(() =>
{
Form1 f = new Form1();
f.Show();
System.Threading.Thread.Sleep(3000);
}));
BTW,您可以删除Thread.Sleep()
,因为Application Shutdown mode的默认值为OnLastWindowClose,因此应用程序将处于活动状态,直到用户明确关闭活动窗口,此行为可以通过切换{来更改{1}} Application.ShutdownMode
文件中的OnMainWindowClose
答案 1 :(得分:1)
这是因为你在同一个线程中创建表单你要告诉它睡觉,在此期间它不会响应绘制请求,尝试在另一个线程中启动表单,并在MainWindow的析构函数中关闭它。 / p>