C# 进度条未按预期更新
进度条会变为70,很好。当我去更新它时,当循环开始时,条不会移动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
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
。啊,让我试试。我把它改成双倍。