在onStartup完成之前,动画不会启动

时间:2012-09-27 14:38:31

标签: c# wpf animation splash-screen

我正在开发一个WPF,C#应用程序。

由于加载过程很长,我们需要创建一个动画启动画面,以便在加载应用程序时显示。

问题是所有初始化代码都在“OnStartup”方法中。 我注意到动画在OnStartup完成之前不会启动,所以我猜测在应用程序启动结束之前你不能显示任何动画。

我对这个假设是对的吗?如果是的话,有没有办法在启动完成之前显示动画,还是应该将代码移动到另一个地方? (我不愿意这样做,因为这将是应用程序流程的巨大变化)。

修改

我尝试使用新线程并使用调度程序启动启动,但调度程序的调用直到OnStartup完成才启动。

2 个答案:

答案 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)

使用动画创建一个新窗口。首先启动此窗口,当它向上创建主窗口并在加载主窗口后关闭第一个窗口。您可以将动画窗口设置为“始终在顶部”以防止主窗口覆盖动画。