У меня есть одна ситуация. У меня есть одно задание Eclipse, с помощью следующего кода:Работа Eclipse с доступом к пользовательскому интерфейсу
private class ExecutionJob extends Job {
public static final String MY_FAMILY = "myJobFamily";
public ExecutionJob(String name) {
super(name);
}
@Override
protected IStatus run(IProgressMonitor monitor) {
monitor.beginTask("executing ...... ", IProgressMonitor.UNKNOWN);
methodForExecution();
monitor.done();
return Status.OK_STATUS;
}
@Override
public boolean belongsTo(Object family) {
return family == MY_FAMILY;
}
}
И это methodForExecution() имеет код, как показано ниже:
public void methodForExecution(){
PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().showView("view_id");
}
Теперь ситуация, работа открывает что-то вроде ProgressMonitor, и мой метод пытается получить доступ к пользовательскому интерфейсу, который на самом деле находится за контролем прогресса этой работы. И это дает NullPointerException, поскольку монитор прогресса не имеет ActiveWorkbenchWindow.
Я не могу использовать UIJob, так как я должен выполнить этот методForExecution() асинхронно. Может кто-то, пожалуйста, помогите мне решить это.
Я столкнулся с этой проблемой http://stackoverflow.com/questions/19325603/eclispe-does-not-show-progress-bar-of-user-threads при использовании UIJob – Rajan
Если все, что вы делаете, это шоу работа будет закончена очень быстро и не будет времени, чтобы показать индикатор выполнения. –
Я обновил ответ, чтобы быть более явным, когда использовать UIJob или обычный Job. –