我有一个执行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);
}
这不能代表进度,我已经看到进度条充满并再次重新开始,并且工作在第二个或第三个“运行”处结束了
我希望进度条实际显示完成的百分比 有可能吗?还是我必须试一试然后猜测?
答案 0 :(得分:1)
不幸的是,无法自动执行此操作(据我所知)。 定义进度条中表示的进度的是您作为程序员。
通常的示例是迭代大型数组的后台进程。例如,当对数组的每1/10进行背景处理时,进度条将以10%的比例更新。或数组的每1/20用5%的比例,依此类推。例如,您可以在评论中引用@SergeyShevchenko提供的link。
至少(以一种不太具有代表性的方式),您可以决定第一个功能约占整个工作的50%(20%至80%?),并在完成第一个功能后相应地更新进度条在调用第二个函数之前。
另一种方法是更改两个功能(如果可能且合理),以使其能够报告进度,那么您就可以将报告的进度转换为ProgressBar状态。