自动递增后台工作者的进度条

本文关键字:工作者 后台 | 更新日期: 2023-09-27 18:32:30

如何自动递增进度栏而不是调用bgWorker.ReportProgress(x)?(我使用C#,WPF应用程序)。

问题是,在BackgroundWorker的工作中,我调用了做很多工作的外部库,我想在库工作时更新进度条。我可以估计运行外部方法所需的时间。

我尝试使用计时器,但这不起作用,因为我无法从另一个线程访问 bgWorker 。

换句话说,我需要这样的东西:

bgWorker.StartPercentage = 40;
bgWorker.FinishPercentage = 80;
bgWorker.ProgressBarUpdateTime = 20000; // estimated time needed to run external library
bgWorker.StartProgressBarUpdate();
ExternalLibrary.CallMethod(); // it takes about 20 sec to run this, bgWorker should
     // update ProgressBar, while method is working
bgWorker.ReportProgress(80); // correct ProgressBar value
// do rest of work

我该怎么做?

自动递增后台工作者的进度条

您需要为更新进度条的计时器使用单独的后台工作线程。

progressBar.BeginAnimation() 完全按照我的意愿去做。 @tim提供了帮助我的链接。