我有一组执行文件操作的 API,例如saveToFile(CustomObject objectToSave);
由于文件操作可能很长,我决定应该向用户显示一些指示,例如进度条。
我读到了 a ProgressMonitorDialog
,所以我尝试了它,但它并不能完全按照我的需要工作(或者更好的是我不知道如何正确使用它)。
目前我做:
ProgressMonitorDialog progressDialog = new ProgressMonitorDialog(theShell);
try {
progressDialog.run(false, true, new IRunnableWithProgress() {
@Override
public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {
monitor.beginTask("Saving your data", 100);
try {
Utils.saveToFile(objectToSave);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
monitor.done();
}
});
这段代码非常快地显示了一个进度对话框并结束,但问题是在较慢的 PC 上,这将堆叠直到Utils.saveToFile
返回,而我不知道如何指示中间过程,直到保存完成。
我发现一个线程提到IProgressMonitor.UNKNOWN
但它没有说明monitor
期间发生的事情performRead(_fileName, monitor);
我将如何解决这个问题?