首页 > 解决方案 > 显示长时间不返回的冗长后台作业的进度

问题描述

温窗体。我有一份由后台工作人员处理的长期工作。当 bg worker 运行时,我会显示一个状态栏,其中包含“请稍候”消息和一个动画 gif。但是,我想显示某种进度计数,即使这是估计数字。例如10%、20%等。问题是bg作业执行了一个存储过程,直到它完成(100分钟)才回来,所以好像我没有可以调用的循环worker.ReportProgress(percentageComplete)。

我是否需要第二个可以设置的 bg worker 来执行循环并调用 worker.ReportProgress(percentageComplete)?如果是,bg worker 1(执行存储过程的那个)如何告诉 bg worker 2 完成所以它停止(如果 bg worker 1 在估计时间之前完成?)

标签: multithreadingbackgroundprogress-barworker

解决方案


现在用一个足够好的解决方案解决了我的问题:添加了第二个 bg 工作人员以在状态栏中绘制进度(每隔一段时间显示 % 进度和估计时间)。一旦 worker1 完成,它会在 UI 中显示消息。唯一的一点是,worker2 必须在 worker1 之前完成,否则会在实际完成之前显示“作业已完成”。现在这已经足够好了,我只会在工作很长的时候使用它(这是已知的),否则,动画 gif +“请稍候”就足够了。


推荐阅读