进度条不起作用

时间:2012-10-20 00:41:21

标签: c# winforms backgroundworker

我正在尝试在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%并停止,第二个柱根本不移动,但进程仍在运行。

1 个答案:

答案 0 :(得分:1)

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

backgroundWorker1.ReportProgress(++a);

与其他电话相同。顺便说一句上次报告很奇怪 - d的值只改变了一次。也许您应该使用d += 25代替?