WPFにプログレスバーがあり、ストーリーボードアニメーションを、実行中のタスクに基づいて変更される可能性のあるx期間の0〜90の塗りつぶしに設定します。
ストーリーボードアニメーションを別のスレッドで再生し、それに介入して、必要に応じてプログレスバーのさまざまなプロパティを変更することは可能でしょうか?
WPFにプログレスバーがあり、ストーリーボードアニメーションを、実行中のタスクに基づいて変更される可能性のあるx期間の0〜90の塗りつぶしに設定します。
ストーリーボードアニメーションを別のスレッドで再生し、それに介入して、必要に応じてプログレスバーのさまざまなプロパティを変更することは可能でしょうか?
Laurentはおそらくあなたの実際の質問に答えますが、正解はノーです。
プログレスバーはUIスレッドでのみ実行できます。
別のスレッドで実行できるのはProgressBarに進行状況を報告するプロセスですが、ProgressBarの更新はUIスレッドで実行する必要があります。
提案する設定により、ジョブの正しいステータスが表示されないProgressBarが発生する可能性があります。プロセスとアニメーションの両方を同期しようとするのではなく、プロセスにステータスを報告させる方がおそらく良いでしょう。
ProgressBarのプロパティをアニメーションにバインドしている可能性があるため、アニメーションはUIスレッドでも実行する必要がある場合があります。
ローランのコメントによると..。
void startProgress()
{
ThreadStart ts = new ThreadStart(Go);
Thread t = new Thread(ts);
t.Start();
}
void Go()
{
double val = 0;
while (val < 100)
{
Thread.Sleep(50);
Dispatcher.Invoke(new action(() =>
{
MyProgressBar.Value += 0.5;
val = MyProgressBar.Value;
}));
}
}
delegate void action();