multithreading - 显示长时间不返回的冗长后台作业的进度
问题描述
温窗体。我有一份由后台工作人员处理的长期工作。当 bg worker 运行时,我会显示一个状态栏,其中包含“请稍候”消息和一个动画 gif。但是,我想显示某种进度计数,即使这是估计数字。例如10%、20%等。问题是bg作业执行了一个存储过程,直到它完成(100分钟)才回来,所以好像我没有可以调用的循环worker.ReportProgress(percentageComplete)。
我是否需要第二个可以设置的 bg worker 来执行循环并调用 worker.ReportProgress(percentageComplete)?如果是,bg worker 1(执行存储过程的那个)如何告诉 bg worker 2 完成所以它停止(如果 bg worker 1 在估计时间之前完成?)
解决方案
现在用一个足够好的解决方案解决了我的问题:添加了第二个 bg 工作人员以在状态栏中绘制进度(每隔一段时间显示 % 进度和估计时间)。一旦 worker1 完成,它会在 UI 中显示消息。唯一的一点是,worker2 必须在 worker1 之前完成,否则会在实际完成之前显示“作业已完成”。现在这已经足够好了,我只会在工作很长的时候使用它(这是已知的),否则,动画 gif +“请稍候”就足够了。
推荐阅读
- javascript - 使用 CSS 动画无法让我的卡片与 Vanilla JS、CSS 和 HTML 一起翻转
- python - Einsum 会产生溢出。为什么?
- python-3.x - 更大数字python的代码 - 显示错误的数字更大的错误
- html - 如何在html中显示文本?
- apache-spark - 错误执行程序:阶段 1.0 中任务 52.0 中的异常 (TID 200)
- nosql - 重命名文档密钥 Arango DB
- machine-learning - RDF 存储上的机器学习以检测模式
- php - 在 JMS 序列化程序中混合访问器和 SkipWhenEmpty
- python - 如何使用 Python 从容器内的文本中刮取 Td
- openstreetmap - 有没有办法在 OSRM 服务器中使用从 openstreetmap 导出的地图图块?