2015-07-28 3 views
0

Я работаю над приложением RCP, у меня есть прецедент, в котором я проверяю, не является ли корневой компонент нулевым, что означает, что модель уже загружена и если она равна нулю, тогда модель не загружается, если модель не загружена, я пытаюсь сначала загрузить модель в отдельное задание, а затем получить модель после ее загрузки. То, что я написалЗапуск работы затмения

if (cm != null) { 
     LoadModel m = null; 
     swaModel = architectureModelReader.getArchitectureModel(); 
     Component rootComponent = swaModel.getRootComponent(); 
     if(rootComponent != null){ 
      MirrorConfigurationModel mcm = new MirrorConfigurationModel(rootComponent, connectionString, emptyEapName, platformDB.getAbsolutePath(),temp, getJetPath(), disabledComponents, disabledDiagrams, disabledInterfaces, disabledElements); 
      mcm.execute(); 
     } 
     else{ 
      final Job readArchitectureModelJob = new Job("Long Running Job") { 
       protected IStatus run(IProgressMonitor monitor) { 
        try { 
         architectureModelReader.createSamInstance(monitor, true); 
         return Status.OK_STATUS; 
        }catch(final Exception e) { 
        return Status.CANCEL_STATUS; 
       } 
       } 
      }; 
      readArchitectureModelJob.addJobChangeListener(new JobChangeAdapter() { 
       public void done(IJobChangeEvent event) { 
        if (event.getResult().isOK()){ 
         Component c = swaModel.getRootComponent(); 
         System.out.println(c.getName()); 
        } 
        else 
         System.out.println("Job did not complete successfully"); 
       } 
      }); 
      readArchitectureModelJob.setSystem(true); 
      readArchitectureModelJob.schedule(); 
     }    
     } 

    } 

Так вот, если корневой компонент не является нулевым зеркало нагруженная модель (которая работает отлично), но если корень компонента равна нулю, я пытаюсь загрузить модель в еще пункте, а затем получение но проблема до загрузки модели в позицию else, которую обработчик перескакивает до

Может ли кто-нибудь сказать мне, как запустить загрузку этой модели, прежде чем я получу модель?

Благодаря

+0

Вам придется подождать, пока работа запустится, и сделайте то, что вы хотите сделать. –

+0

Как я могу ждать выполнения задания? – wearybands

ответ

0

Вы должны будете откладывать то, что вы хотите сделать, пока работа не закончится.

Один из способов использования функции IJobChangeListener для прослушивания событий смены задания. Использование:

job.addJobChangeListener(new JobChangeAdapter() 
    { 
    @Override 
    public void done(IJobChangeEvent event) { 
     // TODO do your end of job processing here 
    } 
    }); 

для добавления слушателя. Сделайте это до задание запланировано.

+0

, когда я вызываю m.execute(), он должен планировать и запускать задание, и как только задание будет завершено, не следует ли ему запускать код после еще? – wearybands

+0

Нет, работа выполняется в фоновом потоке и закончится намного позже. Вызов расписания возвращается, как только задание добавлено в список фоновых заданий. –

+0

Спасибо за ваш ответ ... Сделано :) – wearybands

Смежные вопросы