[英]Find existing Jobs in an Eclipse RCP 4 application
I have some long running tasks in my eclipse RCP (e4) application that I implemented using the Job API. 我在使用Job API实现的eclipse RCP(e4)应用程序中有一些长时间运行的任务。 The Job is started immediately (before GUI is shown).
作业立即启动(在显示GUI之前)。
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
}
Now I want to display a progress bar somewhere in my GUI to show if MyJob is still running. 现在我想在GUI中的某个位置显示一个进度条,以显示MyJob是否仍在运行。
I have tried this using the IJobManager: 我使用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);
}
}
But my Job is not shown in the status bar. 但我的工作没有显示在状态栏中。 I suppose it has something to do with my starting the job before the GUI is there but I'm not sure.
我想这与我在GUI出现之前的工作有关,但我不确定。
So I have two questions: 所以我有两个问题:
You do need to create the progress monitor and call IJobManager.setProgressProvider
before the Job
starts (which is when ProgressProvider.createMonitor
is called). 您需要创建进度监视器并在
Job
开始之前调用IJobManager.setProgressProvider
(调用ProgressProvider.createMonitor
时)。
I set up my progress provider in the @PostContextCreate
method of my LifeCycle
class. 我在
LifeCycle
类的@PostContextCreate
方法中设置了我的进度提供程序。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.