0
我在使用Job API實現的eclipse RCP(e4)應用程序中有一些長時間運行的任務。作業立即開始(在顯示GUI之前)。在Eclipse RCP 4應用程序中查找現有作業
private class MyJob extends Job {
@Override
protected IStatus run(IProgressMonitor monitor) {
monitor.beginTask("do some long stuff", 4);
doStep1();
monitor.worked(1);
doStep2();
monitor.worked(1);
doStep3();
monitor.done();
}
// methods for the steps follow here
}
現在我想在我的GUI的某個地方顯示進度條,以顯示MyJob是否仍在運行。
我已經嘗試了本使用IJobManager:
public class MyStatusbar {
private ProgressBar progressBar;
@Inject
UISynchronize sync;
@PostConstruct
public void createControls(Composite parent) {
progressBar = new ProgressBar(parent, SWT.SMOOTH);
progressBar.setBounds(100, 10, 200, 20);
// Setting the progress monitor
IJobManager manager = Job.getJobManager();
final IProgressMonitor p = (IProgressMonitor) new IProgressMonitor() {
@Override
public void worked(final int work) {
sync.syncExec(new Runnable() {
@Override
public void run() {
System.out.println("Worked");
progressBar.setSelection(progressBar.getSelection()
+ work);
}
});
}
// [...]
};
ProgressProvider provider = new ProgressProvider() {
@Override
public IProgressMonitor createMonitor(Job job) {
return p;
}
};
manager.setProgressProvider(provider);
}
}
但我的工作是不是在狀態欄中顯示。我想這與GUI開始前的工作有關,但我不確定。
所以我有兩個問題:
- 我在做什麼錯?
- 我的方法是正確的還是有更好的方法來做到這一點?