我是RCP的新手,我正在构建一个产品,我有“导入”功能,从excel导入大约50000个数据。我想展示进度中的进展吧。我尝试了很多例子,但无法提取所需的代码可能是我不知道如何写出正确的方法。请给我举几个步骤,以帮助理解流程。如果步骤说明在哪里编写IProgressMonitor和数据库连接代码将会很好,这将从excel导入数据并插入到数据库中。
我还需要更多的东西,比如调用每个方法字符串应该更改为不同的字符串,就像我在Image中提到的那样。通过这样做,用户可以意识到幕后发生的事情。
new ProgressMonitorDialog(shell).run(true,true,new IRunnableWithProgress(){ @覆盖 public void run(IProgressMonitor monitor)抛出InvocationTargetException, InterruptedException { 尝试{ monitor.beginTask(“导入数据...”,IProgressMonitor.UNKNOWN);
if (monitor.isCanceled())
return;
try {
Display.getDefault().asyncExec(new Runnable() {@
Override
public void run() {
Snippet s = new Snippet();
// What should i write here ?
}
});
monitor.subTask(String.valueOf(i)); // How to show elapse time ?
Thread.sleep(100); // When to sleep thread without knowing how much time it will take ?
} catch (InterruptedException e) {
e.printStackTrace();
}
} finally {
monitor.done();
}
});
提前感谢。
答案 0 :(得分:0)
这是一个使用具有未知总工作量的进度监视器的基本作业,并通知有关即将执行的子任务
Job job = new Job( "Import Data" ) {
@Override
protected IStatus run( IProgressMonitor monitor ) {
monitor.beginTask( "Importing Data...", IProgressMonitor.UNKNOWN );
try {
monitor.subTask( "Opening Database..." );
// connect to db
monitor.subTask( "Reading Elements..." );
// read elements
...
} finally {
monitor.done();
}
return Status.OK_STATUS;
}
};
job.schedule();
有关改进和更多细节,您应该阅读相应的文章和文档。