У меня такая ситуация, когда копирование элементов завершено, он должен изменить пользовательский интерфейс.Я создал задание для копирования элементов и присоединился к заданию, чтобы до его завершения он не изменял пользовательский интерфейс.Но пользовательский интерфейс зависает до завершения операции копирования.Вот мой код
private void copyItems(SelectDTO selection, TreeViewer viewer) {
try {
Job job = new Job("test") {
@Override
protected IStatus run(IProgressMonitor monitor) {
ISafeRunnable runnable = new ISafeRunnable() {
@Override
public void run() throws Exception {
//copy items
}
@Override
public void handleException(Throwable exception) {
}
};
SafeRunner.run(runnable);
return Status.OK_STATUS;
}
@Override
public boolean belongsTo(Object family) {
}
};
Я присоединился к работе в addJobChangeListener
job.addJobChangeListener(new IJobChangeListener() {
@Override
public void sleeping(IJobChangeEvent event) {
// TODO Auto-generated method stub
}
@Override
public void scheduled(IJobChangeEvent event) {
// TODO Auto-generated method stub
}
@Override
public void running(IJobChangeEvent event) {
// TODO Auto-generated method stub
}
@Override
public void done(IJobChangeEvent event) {
}
@Override
public void awake(IJobChangeEvent event) {
// TODO Auto-generated method stub
}
@Override
public void aboutToRun(IJobChangeEvent event) {
// TODO Auto-generated method stub
}
});
job.schedule();
job.join();
} catch (Exception e) {
}
}
После вызова этого метода я обновляю пользовательский интерфейс.Какие изменения я могу сделать, чтобы перестать зависать?Спасибо.