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 に答える