gpt4 book ai didi

java - 等待在 eclipse rcp 应用程序退出时运行作业

转载 作者:搜寻专家 更新时间:2023-11-01 03:27:21 24 4
gpt4 key购买 nike

我有一个 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()) return; 应该有帮助。否则,尝试将 asyncExec 更改为 syncExec 以查看问题是否消失。

关于java - 等待在 eclipse rcp 应用程序退出时运行作业,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10090145/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com