大きな問題に直面しています。WPFアプリで、メインウィンドウにアニメーションの読み込み(ストーリーボード)のある境界線が含まれています。デフォルトでは折りたたまれています。大量のデータを読み込んだり、新しいXAML画面を読み込んだりすると、表示されて折りたたまれることがあります。
まず第一に、私はスレッディングをまったく使用していませんでした。また、フリーズとレイトで表示されるアニメーションの両方を使用していました。
それから私はこのようなスレッドを使い始めました:
Messenger.StartAnimation();
var task = Task.Factory.StartNew(() =>
{
Thread.Sleep(150);
}).ContinueWith((a) =>
{
// HERE Screen moving + large amount of data loaded with Entity Framework
Thread.Sleep(200);
Messenger.StopAnimation();
}, CancellationToken.None, TaskContinuationOptions.NotOnFaulted, threadUIContext);
今回は、アニメーションが1秒間機能し、その後、すべてのデータと新しく表示された画面が読み込まれるまでフリーズしました。Aメインスレッドがすべてのスレッドをブロックするようなものです。
Messenger.StopAnimation()
タイマーを追加して、3秒後に遅延させようとしました。これでも、すべてが変更されて新しい画面に読み込まれると、アニメーションが1秒間フリーズし、その後アニメーションが3秒間続きます。
私は試しましたがDispatcher
、BackgroundWorker
以前のコードと同じ問題に遭遇しました。
アニメーションをポップアップに表示したり、透明な新しいウィンドウに表示したりしました。何もすることはありません、それは停止する前に常に1秒間フリーズすることになります...
情報については、私はObservableCollection
(リストで試しましたが、同じ問題です)を使用し、の中に別の画面をロードContentControl
しますMainWindow
。
私はtechdaysのビデオ、Fast and Furiousを見てきました。ビデオのようにスムーズなアニメーションを作りたかったのですが、フリーズを取り除くのは不可能のようです。