Java 进度条仅在调试模式下显示。作业加异步显示

Java 进度条仅在调试模式下显示。作业加异步显示,java,swt,eclipse-rcp,Java,Swt,Eclipse Rcp,当我在调试模式下运行应用程序时,进度条会正确显示,所有UI组件都在等待作业。但在发布模式下,UI组件仍在等待作业,但进度条并没有反映出来 原因是什么?您不需要运行asycExec。尝试使用UIJob: UIJob是通过asyncExec在UI线程内运行的作业。 像这样: Job job = new Job("Initialize Info ") { @Override protected IStatus run(IProgressMonitor monitor) {

当我在调试模式下运行应用程序时,进度条会正确显示,所有UI组件都在等待作业。但在发布模式下,UI组件仍在等待作业,但进度条并没有反映出来


原因是什么?

您不需要运行
asycExec
。尝试使用
UIJob

UIJob是通过asyncExec在UI线程内运行的作业。

像这样:

 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();
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);
    }
});