0

进度条到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 就不会更新。它只是不动。顺便说一下,表格没有锁定,因为我正在使用后台工作人员。

有谁知道这是为什么?

4

3 回答 3

1

你有一个integer current和一个integer count。由于count更大,当您进行除法时,它始终为 0(整数除法),直到current达到current。在进行除法之前,您应该制作count/doubledecimal将两者之一转换为double/ 。decimal

于 2012-08-28T14:52:40.227 回答
0

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

于 2012-08-28T14:48:31.560 回答
0

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

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

好的,我不知道你需要的数学(对不起,我在这里做其他事情),但我建议你在计算中加上括号,因为在我看来这可能是一个问题。

于 2012-08-28T14:49:19.087 回答