C# 进度条未按预期更新

C# 进度条未按预期更新,c#,progress-bar,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); DoS

进度条会变为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后不会更新。它就是不动。顺便说一下,表单没有锁定,因为我使用的是后台工作程序


有人知道为什么吗?

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

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

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

OK,我不知道你需要的数学(对不起,我是在这里的其他东西),但是我建议你把括号放在计算中,因为我觉得这可能是个问题。

< p>你有一个<强>整数 <代码>当前< /代码>,还有一个<强>整数< /强> <代码>计数< /代码>。由于
count
更大,因此在进行除法时,它始终为0(整数除法),直到
current
达到
current
。在进行除法之前,您应该将
计数
设为
双倍
/
十进制
,或者将其中一个设为
双倍
/
十进制

当前的
在您的循环中没有更新。很抱歉,它在循环中。我只是把它放错线了。我编辑了我的作品。谢谢!让我用括号来试试,fgucelaar也有一点关于当前变量不递增的观点。您也需要在该循环中使用
current++
。@什么的测试者示例?最简单的解决方法是将
count
更改为
double
decimal
类型,而不是
int
。啊,让我试试。我把它改成双倍。