长时间没有回来的冗长的后台工作显示进度

问题描述

Winform。 我的长期工作由背景工作者处理。 当bg worker运行时,我显示一个状态栏,其中带有“请稍候”消息以及动画gif。 但是,我想显示某种进度计数,即使这是一个估计的数字。 例如10%,20%等 问题在于bg作业执行的存储过程要等到完成(100分钟)后才会返回,因此好像没有一个可以调用worker.ReportProgress(percentageComplete)的循环一样。

我是否需要第二个bg工人,我可以将其设置为执行循环并调用worker.ReportProgress(percentageComplete)?如果是,bg worker 1(执行存储过程直到很长时间才回来的程序)如何告诉bg worker 2完成使其停止(以防bg worker 1在估计时间之前完成?)

解决方法

现在通过一个足够好的解决方案解决了我的问题:添加了第二个bg工作人员在状态栏中绘制进度(显示进度百分比经常以估计的时间显示)。一旦worker1完成,它将在UI中显示该消息。 唯一的事情是,worker2必须在worker1之前完成,否则将在实际完成之前显示“作业已完成”。 就目前而言,这已经足够好了,我只会在工作很长的时候才使用它(这是众所周知的),否则,动画gif +“请稍等”就足够了。