如何显示进度条以及背景工作者的实际进度百分比?

时间:2018-08-08 15:10:26

标签: c# winforms progress-bar backgroundworker

我有一个执行2个功能的后台工作人员,我不知道是否有一种方法可以衡量完成此过程需要多少费用。

例如:

private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
    table1 = function1;
    table2 = function2;
}

我找到了

int total = 100; //some number (this is your variable to change)!!

for (int i = 0; i <= total; i++) //some number (total)
{
    System.Threading.Thread.Sleep(100);                
    backgroundWorker1.ReportProgress(i);
}

这不能代表进度,我已经看到进度条充满并再次重新开始,并且工作在第二个或第三个“运行”处结束了

我希望进度条实际显示完成的百分比 有可能吗?还是我必须试一试然后猜测?

1 个答案:

答案 0 :(得分:1)

不幸的是,无法自动执行此操作(据我所知)。 定义进度条中表示的进度的是您作为程序员。

通常的示例是迭代大型数组的后台进程。例如,当对数组的每1/10进行背景处理时,进度条将以10%的比例更新。或数组的每1/20用5%的比例,依此类推。例如,您可以在评论中引用@SergeyShevchenko提供的link

至少(以一种不太具有代表性的方式),您可以决定第一个功能约占整个工作的50%(20%至80%?),并在完成第一个功能后相应地更新进度条在调用第二个函数之前。

另一种方法是更改​​两个功能(如果可能且合理),以使其能够报告进度,那么您就可以将报告的进度转换为ProgressBar状态。