进度条到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就不会更新。它只是不移动。表格没有锁定,因为我正在使用后台工作者。
有谁知道为什么会这样?
答案 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);
}
好吧我不知道你需要的数学(对不起,我在这里的其他东西),但我建议你把括号放在计算中,因为它看起来像我可能是一个问题