zvi*_*ico 4 eclipse eclipse-rcp
我有一个在Eclipse中运行的工作(扩展org.eclipse.core.runtime.jobs.Job的类).这个工作得到了一个IProgressMonitor,我用它来报告进度,这一切都很好.
这是我的问题:在处理过程中,我有时会发现有比我预期更多的工作.有时甚至加倍.但是,一旦我在进度监视器中设置了总滴答数,就无法更改此值.
关于如何克服这个问题的任何想法?
看看SubMonitor.
void doSomething(IProgressMonitor monitor) {
// Convert the given monitor into a progress instance
SubMonitor progress = SubMonitor.convert(monitor, 100);
// Use 30% of the progress to do some work
doSomeWork(progress.newChild(30));
// Advance the monitor by another 30%
progress.worked(30);
// Use the remaining 40% of the progress to do some more work
doSomeWork(progress.newChild(40));
}
Run Code Online (Sandbox Code Playgroud)
除了技术细节之外,我就是这样做的:
这具有以下效果:
这比通过比用户期望的更快完成更好,并且看起来不会长时间卡住.
对于奖励积分,如果/当检测到潜在的长子任务足够快时,仍然会增加大量的进度.这避免了从50%跳到完成.