我有一个 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");
}
});
}
它运行良好。我遇到的问题是,当我关闭我的应用程序时,我会不时收到带有此错误的空指针异常:
平台关闭后发现作业仍在运行。作业应由在关机期间安排它们的插件取消:>org.eclipse.ui.internal.progress.TaskBarProgressManager$2
问题是由于异步执行,作业正在运行,但同时由于关闭应用程序,一切都被破坏了。那么有没有办法获取/等待正在运行的 UI 作业,以便我可以确保在应用程序关闭之前完成作业?