【问题标题】:How do I show a progress bar with the actual percentage of progress of my background worker?如何显示带有后台工作人员实际进度百分比的进度条?
【发布时间】:2018-08-08 15:10:25
【问题描述】:

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

这不能代表进度,我看到进度条填满并再次重新启动,工作在第二次或第三次“运行”时结束

我希望进度条实际显示完成了多少百分比 这是可能的还是我必须通过试运行来猜测?

【问题讨论】:

  • 这是一个complete example,介绍如何实现一个使用后台工作程序并报告进度的winform。

标签: c# winforms progress-bar backgroundworker


【解决方案1】:

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

通常的例子是一个后台进程迭代一个大数组。例如,当后台进程以数组的每 1/10 完成时,进度条会更新 10% 的部分。或者阵列的每 1/20 分 5%,依此类推。这方面的例子可以参考cmets中@SergeyShevchenko提供的link

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-06-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-24
    • 2013-02-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多