我有一个长时间运行的过程,它从数据库中检索记录,我不想让UI冻结。我已将实际检索移至工作中。我如何知道作业何时完成,以便我可以使用查询结果更新UI?
在下面的示例代码中,一旦dbJob完成,我想要调用updateUI方法。
{{#with currentUser}}
{{> editableText collection="users" field="username" placeholder="Enter username"}}
{{/with}}
答案 0 :(得分:1)
使用IJobChangeListener
收听作业状态的更改。有一个标准JobChangeAdapter
课程,为您不需要的方法提供默认设置,以便您可以执行以下操作:
dbJob.addJobChangeListener(new JobChangeAdapter() {
@Override
public void done(IJobChangeEvent event)
{
// Listener does not run in UI thread so use asyncExec
Display.getDefault().asyncExec(new Runnable()
{
@Override
public void run()
{
updateUI();
}
});
}
});
在之前添加监听器以安排作业。