我有一个
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");
}
});
}
它运行正常.我遇到的问题是,当我关闭我的应用程序时,我会不时收到此错误的空指针异常:
Job found still running after platform shutdown. Jobs should be canceled by the plugin >that scheduled them during shutdown: >org.eclipse.ui.internal.progress.TaskBarProgressManager$2
问题是由于异步执行而导致作业正在运行,但同时由于关闭应用程序而导致所有内容都被销毁.那么有没有办法获得/等待正在运行的UI作业,以便我可以确保在应用程序关闭之前完成作业?
最佳答案 异常消息似乎表明您在关闭期间调度了setMessage,因此可能在代码前加上if(PlatformUI.getWorkbench().isClosing())返回;应该有所帮助
否则,请尝试将asyncExec更改为syncExec以查看问题是否消失.