【发布时间】:2017-05-09 15:35:07
【问题描述】:
我有一个非常繁重的应用程序需要一些时间才能自行关闭(它还取决于运行它的电脑。但现在不是问题)
我想在这个关闭时间显示一个带有消息的自定义窗口,但是一旦我调用“关闭”方法,每个窗口都会消失(除了为 MessageBox 制作的)。
这是我试图用来实现我的目标的代码
void MainWindow_Closing(object sender, CancelEventArgs e)
{
Task.Factory.StartNew(() =>
{
var closingWaitTest = "application closing, please wait;
Application.Current.Dispatcher.Invoke(() =>
{
var closingSplash = new ClosingSplashWindow(closingWaitTest);
closingSplash.Show();
});
MessageBox.Show(closingWaitTest);
});
Application.Current.Shutdown();
}
我添加了一个消息框只是为了检查,它确实有效。我的意思是,当我的窗口立即关闭时,MessageBox 一直保持打开状态,直到应用程序进程处于活动状态(我从 Windows 任务管理器中检查)。
希望有人可以对此提出一些建议, 在此先感谢(:
编辑 -
所以,主要问题是,一旦我调用 Application.Current.Shutdown,我的启动窗口就会立即关闭,而应用程序进程仍然启动并运行了一段时间(在调用关机之前处理我所有的东西实际上减少了这个一点时间)。
关键是我想在整个过程中显示一个窗口,该过程仍在运行;鉴于 MessageBox 的行为与此完全相同,我的问题是: 有没有办法让我的 ClosingSplashWindow 表现得像一个 MessageBox 并保持可见直到应用程序进程真的死了?
【问题讨论】:
标签: c# wpf performance task splash-screen