如何显示进度条以及后台工作人员的实际进度百分比?
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 状态。
我有一个执行 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 状态。