java – 等待eclipse rcp app退出时运行的作业

我有一个
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以查看问题是否消失.

点赞