0

WPFにプログレスバーがあり、ストーリーボードアニメーションを、実行中のタスクに基づいて変更される可能性のあるx期間の0〜90の塗りつぶしに設定します。

ストーリーボードアニメーションを別のスレッドで再生し、それに介入して、必要に応じてプログレスバーのさまざまなプロパティを変更することは可能でしょうか?

4

2 に答える 2

3

Laurentはおそらくあなたの実際の質問に答えますが、正解はノーです。

プログレスバーはUIスレッドでのみ実行できます。

別のスレッドで実行できるのはProgressBarに進行状況を報告するプロセスですが、ProgressBarの更新はUIスレッドで実行する必要があります。

提案する設定により、ジョブの正しいステータスが表示されないProgressBarが発生する可能性があります。プロセスとアニメーションの両方を同期しようとするのではなく、プロセスにステータスを報告させる方がおそらく良いでしょう。

ProgressBarのプロパティをアニメーションにバインドしている可能性があるため、アニメーションはUIスレッドでも実行する必要がある場合があります。

于 2012-09-20T04:49:05.527 に答える
2

ローランのコメントによると..。

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();
于 2012-09-20T04:39:48.357 に答える