如何显示进度条以及后台工作人员的实际进度百分比?

How do I show a progress bar with the actual percentage of progress of my background worker?

我有一个执行 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);
}

这不代表进度,我看到进度条填满并再次重新开始,工作在第二或第三的某个地方结束 "run"

我希望进度条实际显示已完成的百分比 这是可能的还是我必须通过试验和 运行?

来猜测

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

通常的例子是后台进程迭代一个大数组。例如,当后台进程对数组的每 1/10 完成时,进度条会更新 10%。或者每 1/20 数组的 5% 部分,依此类推。有关此示例,您可以参考@SergeyShevchenko 在评论中提供的link

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

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