0

bgWorker.ReportProgress(x)を呼び出す代わりにProgressBarを自動インクリメントする方法は? (私はC#、WPFアプリケーションを使用しています)。

問題は、BackgroundWorker の作業内で、多くの作業を行う外部ライブラリを呼び出し、ライブラリの作業中に ProgressBar を更新したいことです。外部メソッドの実行に必要な時間を見積もることができます。

Timer を使用してみましたが、別のスレッドから bgWorker にアクセスできないため、うまくいきません。

つまり、次のようなものが必要です。

bgWorker.StartPercentage = 40;
bgWorker.FinishPercentage = 80;
bgWorker.ProgressBarUpdateTime = 20000; // estimated time needed to run external library
bgWorker.StartProgressBarUpdate();
ExternalLibrary.CallMethod(); // it takes about 20 sec to run this, bgWorker should
     // update ProgressBar, while method is working
bgWorker.ReportProgress(80); // correct ProgressBar value
// do rest of work

どうやってやるの?

4

2 に答える 2

1

プログレス バーを更新するタイマーには、別のバックグラウンド ワーカーを使用する必要があります。

于 2013-09-24T12:38:23.710 に答える
0

progressBar.BeginAnimation() はまさに私が望むことを行います。@tim が私を助けてくれたリンクを提供してくれました。

于 2013-09-27T04:46:53.463 に答える