`

RCP产品异常:Job found still running after platform shutdown. Jobs should be canceled

阅读更多
RCP 工程打开时异常信息:

Job found still running after platform shutdown.  Jobs should be canceled by the plugin that scheduled them during shutdown: ... ...
-----------------------------
分析发现时程序用的一个UIJob,在workbench非正常关闭时,UIJob还在运行,于是就有了上面的异常,替换成WorkbenchJob,就会正常。
-------
WorkbenchJob时一个专门的UIJob类,和UIJob的主要区别:在允许作业被调度和运行前,WorkbenchJob检测Workbench是否正在运行。

WorkbenchJob它使用作业更改监听器来确保:当作业已经完成时,在WorkbenchJob中包含的preformDone方法也被调用。

WorkbenchJob是UIJob的一种更安全的形式。WorkbenchJob会自己检测Workbench是否在运行,当Workbench关闭时,WorkbenchJob强制终止用户界面的更新。

WorkbenchJob源码贴一下:(关键是本身对PlatformUI.isWorkbenchRunning()的调用)

public abstract class WorkbenchJob extends UIJob {

    public WorkbenchJob(Display jobDisplay, String name) {
        super(jobDisplay, name);
        addDefaultJobChangeListener();
    }

    public WorkbenchJob(String name) {
        super(name);
        addDefaultJobChangeListener();
    }


    private void addDefaultJobChangeListener() {
        addJobChangeListener(new JobChangeAdapter() {
            public void done(IJobChangeEvent event) {
                //Abort if it is not running
                if (!PlatformUI.isWorkbenchRunning()) {
                    return;
                 }
                if (event.getResult().getCode() == IStatus.OK) {
                      performDone(event);
                
            }
        });
    }

    public void performDone(IJobChangeEvent event) {
        //Do nothing by default.
    }

    public boolean shouldSchedule() {
        return super.shouldSchedule() && PlatformUI.isWorkbenchRunning();
    }

    public boolean shouldRun() {
        return super.shouldRun() && PlatformUI.isWorkbenchRunning();
    }

}


分享到:
评论

相关推荐

    org.eclipse.equinox.p2.examples.rcp.cloud.rar

    org.eclipse.equinox.p2.examples.rcp.cloud.rarorg.eclipse.equinox.p2.examples.rcp.cloud.rarorg.eclipse.equinox.p2.examples.rcp.cloud.rar

    Linux命令搜索工具linux-command.zip

    diff、diffstat、file、find、git、gitview、ln、locate、lsattr、mattrib、mc、mcopy、mdel、mdir、mktemp、mmove、mread、mren、mshowfat、mtools、mtoolstest、mv、od、paste、patch、rcp、rhmask、rm、slocate...

    Addison.Wesley.Eclipse.Rich.Client.Platform.Designing.Coding.and.Packaging.Java.Application书和源码

    《Addison.Wesley.Eclipse.Rich.Client.Platform.Designing.Coding.and.Packaging.Java.Application》是一本深入探讨Eclipse Rich Client Platform(RCP)开发的专业书籍,配套源码的提供使得学习过程更具实践性。...

    linux常用命令加实例大全借鉴.pdf

    2. `shutdown`:关机命令,可以设置立即或定时关机。 3. `halt`:停止系统运行,通常用于关闭计算机。 4. `reboot`:重启系统,执行系统初始化过程。 5. `install`:用于软件安装,不同发行版可能有不同的包管理器,...

    Linux命令集Linux命令大全

    9. `rcp`:远程复制,基于rsh协议。 10. `finger`:获取用户信息。 11. `mail`:处理邮件。 12. `nslookup`:查询DNS记录。 五、系统安全相关命令: 1. `passwd`:更改用户密码。 2. `su`:切换用户。 3. `umask`:...

    常用linux 命令 收藏。。

    8. `rlogin`和`rcp`: 远程登录和复制。 9. `finger`: 获取用户信息。 10. `mail`和`nslookup`: 邮件服务和DNS查询。 【系统安全相关命令】 确保系统安全至关重要,以下命令用于设置和管理用户权限: 1. `passwd`:...

    Linux系统必学的60个命令

    2. `shutdown`:用于关闭计算机,超级用户权限。可以设置时间延迟、警告用户、关闭电源或取消关机操作。 3. `halt`、`reboot`:停止和重启系统。 4. `install`:用于安装软件包。 5. `mount`、`umount`:挂载和卸载...

    linux必学的60个命令

    2. `shutdown`:此命令用于安全地关闭或重启系统。`-h`选项用于关机,`-r`用于重启,`-t`设置关机前的延迟时间,`-k`只发送警告不实际执行关机,`-F`在重启时强制检查文件系统。 接着,文件处理命令: 1. `file`:...

    Linux必学的60个命令

    2. `shutdown`:用于安全关闭或重启系统,可设置延迟时间,也可以取消当前的关机计划。 3. `halt`:停止系统运行,通常在关闭电源前使用。 4. `reboot`:重新启动系统。 5. `install`:安装软件或更新系统。 6. `...

    松下通讯协议.doc

    3. RCP:读取多点联系信息。 4. WCP:写入多点联系信息。 5. RCC:读取字单元联系信息。 6. WCC:写入字单元联系信息。 7. SCP:重置字单元联系信息。 8. RD:读取数据区域。 9. WD:写入数据区域。 10. SD:重置...

    linux命令大全,想学linux的从这里开始

    12. **rcp**: 在远程主机之间复制文件。 13. **mail**: 检查、发送和管理邮件。 14. **sendmail**: 发送邮件。 15. **mailq**: 检查邮件队列。 16. **ftp**: 通过FTP协议传输文件。 #### 其他常用命令 1. **cal**:...

    Eclipse RCP Plugin 开发自学入门指南(CEC首发)

    的用法,向一个 RCP应用程序产品中添加标志和帮助。 每一章都基本独立于其他章节。 目录 1 富客户端平台 ......................................................................................................

    The Definitive Guide to NetBeans Platform

    ■CHAPTER 16 From Eclipse RCP to the NetBeans Platform . . . . . . . . . . . . . . . . . . 279 ■CHAPTER 17 Tips and Tricks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ...

    电工电子技术:16 RC电路的零输入响应.ppt

    此时,RC电路的行为可以被描述为一个一阶常系数齐次微分方程,其特征方程为RCp + 1 = 0。这个方程的解表示了电容电压随时间的变化规律。 电容电压的零输入响应呈指数衰减形式,这表明电容上的电压会随着时间按指数...

    linux常用命令集

    2. **shutdown**: 关闭计算机,需要超级用户权限。可设置时间延迟、取消当前的关机操作、强制关机等。 3. **halt/reboot**: 分别用于停止和重启系统,也是超级用户权限。 4. **install**: 安装软件包,具体用法依赖...

    linux命令详细讲解

    8. **Rcp**:远程复制命令,用于在主机间复制文件。 9. **Scp**:安全复制命令,基于SSH,用于安全地复制文件和目录。 二、网络远程操作命令: 1. **Telnet**:远程登录,允许用户访问远程计算机。 2. **Rlogin**:...

    linux常用命令 ——总结

    2. shutdown命令:用于关闭计算机,超级用户才能使用该命令。格式:shutdown [-h][-i][-k][-m][-t]。重要参数:-t:在改变到其它运行级别之前,告诉init程序多久以后关机,-k:并不真正关机,只是送警告信号...

    linux命令大全。。。。。。。。。。。

    2. `shutdown`:关机或重启系统,`-h`表示关机,`-r`表示重启,`-t`设置关机前的延迟时间,`-k`仅发送警告,不实际执行关机。 二、文件处理命令 1. `file`:识别文件类型。 2. `mkdir`:创建目录。 3. `grep`:在...

Global site tag (gtag.js) - Google Analytics