【发布时间】:2011-06-12 03:19:00
【问题描述】:
我想显示多个Jobs 并行运行的进度,但只在一个进度对话框中。
但每次调用 Job.setUser() 似乎都会导致一个新的进度对话框。
我试过了:
- 为所有作业设置一个通用进度组(通过 IJobManager.createProgressGroup() 获得)。
- 有一个父作业调用 setUser() 并加入所有并行作业所属的作业族。 (这会导致后台任务阻止父作业的进度。)
我可以遵循什么模式以使所有并行作业出现在一个进度对话框中?
【问题讨论】:
-
你试过
org.eclipse.ui.progress.UIJob吗? -
@Favonius,感谢您的建议。我试过 UIJob,但它在 UI 线程中运行作业,这会阻止它们并行运行,并阻塞 UI 线程。
-
@Andy Thomas-Cramer:查看此链接jdg2e.com/ch29.jobs/doc/index.html。本教程同时执行两个作业。让我知道这是否有帮助。
-
@Andy Thomas-Cramer:eclipse 的好处是源代码很容易获得:)。只需破解
progress view源。本质上这个想法是一样的,你需要翻译的是Progress View -> Composite到Your Dialog -> Composite。我正在组合所有的 cmets 并将其作为 ans。希望这会有所帮助。 -
实际上没有办法直接将作业“贡献”到打开的 ProgressMonitorDialog 中。我想这是期望的行为,因为它们被称为 background 工作;)。可能最简单的方法是(如前所述)使用您自己的机制,该机制使用类似的技术,如 ProgressView 并在计划的用户作业队列从 0 更改为 1 时打开对话框。如果任何其他作业即将运行,它将自动添加到打开的对话框中...
标签: java eclipse-rcp rcp