У меня есть приложение eclipse rcp, которое периодически (каждые 5 секунд) выполняет некоторую работу в дочернем потоке. Поток выполняет метод для обновления строки состояния приложения, чтобы указать, что работа завершена. Это выглядит так:
protected void updateStatusBar()
{
Display.getDefault().asyncExec(new Runnable() {
@Override
public void run() {
PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().findView(MainView.ID).
getViewSite().getActionBars().getStatusLineManager().setMessage("work finished");
}
});
}
Он работает нормально. У меня проблема в том, что когда я закрываю свое приложение, я время от времени получаю исключение Null Pointer с этой ошибкой:
Обнаружено, что задание все еще выполняется после завершения работы платформы. Задания должны быть отменены подключаемым модулем >который запланировал их во время выключения: >org.eclipse.ui.internal.progress.TaskBarProgressManager$2
Проблема в том, что задание выполняется из-за асинхронного выполнения, но при этом все уничтожается из-за закрытия приложения. Итак, есть ли способ получить / дождаться выполнения заданий пользовательского интерфейса, чтобы я мог убедиться, что задания завершены до закрытия приложения?