执行某些SQL查询时显示进度条

时间:2016-10-22 16:40:56

标签: c# .net

我想在程序执行某些SQL Server查询时显示进度条。我使用C# Tutorial - Progress Bar

中的代码

以下代码:

<div id="image" style="background-image: url(/test.com/test.jpg)">

但是这个功能不能像我预期的那样工作。我的“列表”有13个项目,但它只执行大约7-8项。我必须多次点击“更新”按钮才能得到我需要的所有东西。我不知道如何强制程序等待函数“excuteAutoUpdate”(在这种情况下)完成然后继续循环功能。我对多线程编程很新,所以有很多我不理解的东西。我搜索像背景工作者这样的东西,但我不能将它应用于我的情况。

你能告诉我如何解决它吗?

谢谢!

1 个答案:

答案 0 :(得分:2)

您在每个循环中递增i两次。

for(int i=0;i<totalprogress;i++) // HERE
{
    ...
    progressreport.PercentComplete = i++ * 100 / totalprogress; // AND HERE
    ...
}

因此,您实际上只处理(最多)一半结果。这就是为什么你必须不断运行它来实际处理所有事情的原因。

另请注意,由于后递增(i++)在递增之前返回i的值,因此第一个循环将报告完成百分比为0

i++*100/totalprogress =&gt; 0*100/totalprogress =&gt; 0

将您的代码更改为:

for(int i=0;i<totalprogress;i++) 
{
    ...
    progressreport.PercentComplete = (i+1) * 100 / totalprogress; // This line
    ...
}

或者,您也可以将其更改为:

for(int i=0;i<totalprogress;)  //remove i++
{
    ...
    progressreport.PercentComplete = (++i) * 100 / totalprogress; // change to pre-increment
    ...
}