1

我正在开发 WPF、C# 应用程序。

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

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

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

编辑

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

4

2 回答 2

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.
             })
       );
    }
}
于 2012-09-27T14:48:01.350 回答
1

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

于 2012-09-27T15:01:43.897 回答