Mit ProgressMonitorDialog in Eclipse 4 richtig
Habe ich eine Reihe von APIs, die Datei-Operationen wie z.B. saveToFile(CustomObject objectToSave);
Da eine Datei Vorgang kann langwierig sein, die ich beschlossen, einige Hinweise sollten dem Benutzer angezeigt werden, z.B. Fortschritts-bar.
Lese ich über ein ProgressMonitorDialog
und so habe ich es versucht, aber es nicht genau so funktioniert, wie ich brauche (oder besser ich nicht wissen, wie Sie es richtig verwenden).
Derzeit mache ich:
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();
}
});
Dieser code zeigt ein Dialogfeld mit dem Fortschritt sehr schnell und endet, aber das problem ist, dass auf einem langsameren PC, würde dieser Stapel, bis der Utils.saveToFile
zurückgegeben, während ich keine Ahnung habe, wie zu zeigen Zwischenschritte im Prozess, bis der Speichervorgang abgeschlossen ist.
Fand ich eine thread erwähnenswert, über IProgressMonitor.UNKNOWN
aber nicht sagen, was passiert, in monitor
während der performRead(_fileName, monitor);
Wie würde ich dieses Problem lösen?
Du musst angemeldet sein, um einen Kommentar abzugeben.
ProgressMonitorDialog
ist ein knifflige Stück code. Ich denke, der Teil, der Sie fehlt, istIProgressMonitor#gearbeitet(int)
, die "wächst" der Fortschrittsbalken. Unten ist ein code-Beispiel, sollte klären, wie es zu benutzen:Wird es wie folgt Aussehen:
Für Ihren speziellen Fall der Verwendung
Utils.saveToFile
Sie konnte die hand derIProgressMonitor
über dieser Methode, und rufen Sie dieworked()
Methode von dort.FutureTask
und "abgefragt" dieisDone
hinzufügen1
zu denmonitor.worked(1);
um die Taskleiste zu wachsen.Ich will den Fortschritt anzeigen, während 1-Datei aktualisiert.Aber ich Frage mich, ob es nicht angebracht ist, in eclipse-Anwendungas long as the execution time really justifies using a progress bar
.Interessanter Kommentar.Meinst du, dass das in meinem Fall vielleicht ist es zu viel?Welche andere option wäre besser geeignet für eine Aktion, die potenziell die Verzögerung?IProgressMonitor.UNKNOWN
wie in Ihrer Frage erwähnt.