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% 并停止,第二个进度条根本没有移动,但进程仍在运行。

4

1 回答 1

1

尝试在传递给方法之前进行参数增量。在 C#中,自增运算符可以出现在其操作数之前和之后。当您执行 (a++) 时,它是后缀增量操作。此操作的结果是 a增加之前的值。因此传递给的最大值ReportProgess将是 99 而不是 100。如果将增量操作更改为 (++a),即前缀增量,则操作结果将是增量的值:

backgroundWorker1.ReportProgress(++a);

与其他呼叫相同。顺便说一句,上次报告很奇怪 - 值d只更改了一次。也许你应该d += 25改用?

于 2012-10-20T00:47:22.603 回答