Job job = new Job("Initialize Info ")
{
@Override
protected IStatus run(IProgressMonitor monitor) {
//some action in job thread
Display.getDefault().asyncExec(new Runnable() {
@Override
public void run() {
//
//different actions with UI components.
}
});
return Status.OK_STATUS;
}
};
job.schedule();
当我在调试模式下运行应用程序时,会正确显示进度条并且所有UI组件都在等待作业。但是在发布模式下,UI组件仍然在等待工作,但进度条并没有反映出来。
是什么原因?
答案 0 :(得分:1)
您无需运行asycExec
。尝试使用UIJob
:
The UIJob is a Job that runs within the UI Thread via an asyncExec.
像这样:
Job job = new Job("") {
@Override
protected IStatus run(IProgressMonitor monitor) {
monitor.beginTask("Task..." -1);
// do what i need to do (and doesn't bother my UI)
return Status.OK_STATUS;
}
};
job.setUser(true);
job.schedule();
job.addJobChangeListener(new JobChangeAdapter() {
@Override
public void done(IJobChangeEvent event) {
new UIJob("") {
@Override
public IStatus runInUIThread(IProgressMonitor monitor) {
// Update my UI
monitor.beginTask("UI Task..." -1);
return Status.OK_STATUS;
}
}.schedule();
super.done(event);
}
});