我正在开发一个WPF,C#应用程序。
由于加载过程很长,我们需要创建一个动画启动画面,以便在加载应用程序时显示。
问题是所有初始化代码都在“OnStartup”方法中。 我注意到动画在OnStartup完成之前不会启动,所以我猜测在应用程序启动结束之前你不能显示任何动画。
我对这个假设是对的吗?如果是的话,有没有办法在启动完成之前显示动画,还是应该将代码移动到另一个地方? (我不愿意这样做,因为这将是应用程序流程的巨大变化)。
修改
我尝试使用新线程并使用调度程序启动启动,但调度程序的调用直到OnStartup完成才启动。
答案 0 :(得分:4)
你应该这样做:
protected override void OnStartup(StartupEventArgs e)
{
//Start your animation here.
Task.Factory.StartNew(() =>
{
//Start long loading operation here
Application.Current.Dispatcher.Invoke(
new Action(() =>
{
//Stop your animation here
//Note: it needs to run on the UI thread, so we dispatch it.
})
);
}
}
答案 1 :(得分:1)
使用动画创建一个新窗口。首先启动此窗口,当它向上创建主窗口并在加载主窗口后关闭第一个窗口。您可以将动画窗口设置为“始终在顶部”以防止主窗口覆盖动画。