我正在使用以下代码(通过创建新的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时遇到此错误的任何想法。
答案 0 :(得分:1)
要确保家庭中的工作已完成,您可以使用:
Job.getJobManager().join(family, progress-monitor);
所以在退出之前调用它。