对于静默模式执行,获取“在平台关闭后仍然运行的作业”错误

时间:2014-01-21 11:01:23

标签: java eclipse-rcp

我正在使用以下代码(通过创建新的Thread)将结果写入HTML。

private void asyncHTMLWriter(final IResults results) throws IOException {
    Thread htmlThread = new Thread(new Runnable() {

        @Override
        public void run() {
            try {
                // write results to html
            } catch (IOException e) {
                ioException = e;
            }
        }
    }, "HTMLThread"); //$NON-NLS-1$
    htmlThread.start();
}

但是当我使用Job实现相同时,看到“在平台关闭后仍然运行的作业”错误。

private void asyncHTMLWriter1(final IResults results) throws IOException {
    Job job = new Job("HTMLJob") {

        @Override
        public boolean belongsTo(Object family) {
                if (family.equals("HTMLJob")) {
                    return true;
            }
            return super.belongsTo(family);
        }

        @Override
        protected IStatus run(IProgressMonitor monitor) {
            try {
                // write results to html
            } catch (IOException e) {
                return Status.CANCEL_STATUS;
            }
            return Status.OK_STATUS;
        }
    };
    job.schedule();
}

我仅在静默模式执行时看到此错误。 我在使用Job时遇到此错误的任何想法。

1 个答案:

答案 0 :(得分:1)

要确保家庭中的工作已完成,您可以使用:

Job.getJobManager().join(family, progress-monitor);

所以在退出之前调用它。