2

4 ステップのプロセスで 4 つのプログレス バーを使用しようとしています。基本的にプログレス バーが使用されているのは、プロジェクトの実行に長い時間がかかるためです。通常使用される (10 で割る) 単一のプログレス バーを使用すると、プログレス バーが 20 分ごとに 1 スライバーを獲得することになります。(長すぎる。)

コードは次のとおりです。

backgroundWorker1.ReportProgress(a++);

if (a == 100)
{
    backgroundWorker2.ReportProgress(b++);
    a = 0;
}

if (b == 100)
{
    backgroundWorker3.ReportProgress(c++);
    b = 0;
}

if (c == 100)
{
    c = 0;
    d = 25;
}

backgroundWorker4.ReportProgress(d);

問題は、最初のプログレス バーが約 99% に達して停止し、2 番目のバーがまったく動かず、プロセスがまだ実行中であることです。

4

1 に答える 1

1

メソッドに渡す前に、パラメーターのインクリメントを実行してみてください。C# では、インクリメント演算子はそのオペランドの前後に表示できます。(a ++)を実行すると、後置インクリメント操作になります。この操作の結果は、インクリメントされる前の a の値です。したがって、渡される最大値ReportProgessは 100 ではなく 99 になります。インクリメント操作を (++a) に変更すると、プレフィックスのインクリメントであり、操作の結果はインクリメントの a の値になります。

backgroundWorker1.ReportProgress(++a);

他の通話も同様です。ところで、最後のレポートは奇妙です - の値はd一度だけ変更されました。たぶん、d += 25代わりに使用する必要がありますか?

于 2012-10-20T00:47:22.603 に答える