进度条未按预期更新

时间:2012-08-28 14:45:37

标签: c# progress-bar

进度条到70就好了。当循环开始时我去更新它时,条形图不会移动。

int count = finalFiles.Length; //finalFiles in an array and it varies in size.
int current = 0;

private void uploadWorker_DoWork(object sender, DoWorkEventArgs e)
{  
      uploadWorker.ReportProgress(20);

      DoSomeWork();

      uploadWorker.ReportProgress(50);

      DoMoreWork();

      uploadWorker.ReportProgress(70);

      foreach (string file in finalFiles)
      {
           current++; 
           doProcess();
           uploadWorker.ReportProgress(current / count * 30 + 70);
      }
}

同样,问题是进度条一旦达到70就不会更新。它只是不移动。表格没有锁定,因为我正在使用后台工作者。

有谁知道为什么会这样?

3 个答案:

答案 0 :(得分:1)

您有整数 current整数 count。由于count更大,因此当您进行除法时,它始终为0(整数除法),直到current达到current。您应该count一个double / decimal,或者在进行除法之前将其中一个投放到double / decimal

答案 1 :(得分:0)

我不知道doProcess()做了什么,但你不应该在你的foreach中增加current吗?

答案 2 :(得分:0)

看起来你需要一些括号,例如。

 foreach (string file in finalFiles)
      {
           doProcess();
           uploadWorker.ReportProgress( ((current / count) * 30) + 70);
      }

好吧我不知道你需要的数学(对不起,我在这里的其他东西),但我建议你把括号放在计算中,因为它看起来像我可能是一个问题