À l'aide de ProgressMonitorDialog dans Eclipse 4 correctement
J'ai un ensemble d'Api qui ne les opérations de fichier par exemple saveToFile(CustomObject objectToSave);
Depuis une opération de fichier risque d'être long, j'ai décidé que certains indication doit être affichée à l'utilisateur par exemple, la barre de progression.
J'ai lu sur un ProgressMonitorDialog
et donc je l'ai essayé, mais il n'a pas exactement le travail que j'ai besoin (ou mieux, je ne sais pas comment l'utiliser correctement).
Actuellement je fais:
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();
}
});
Ce code affiche une boîte de dialogue de progression très rapide et se termine, mais le problème est que sur un PC plus lents, ce serait de la pile jusqu'à ce que le Utils.saveToFile
retourné, alors que je n'ai aucune idée de comment indiquer intermédiaire du processus jusqu'à ce que la sauvegarde est terminée.
J'ai trouvé un fil de mentionner au sujet de IProgressMonitor.UNKNOWN
mais il ne dit pas ce qui se passe dans monitor
au cours de la performRead(_fileName, monitor);
Comment pourrais-je résoudre ce problème?
Vous devez vous connecter pour publier un commentaire.
ProgressMonitorDialog
est un délicat morceau de code. Je suppose que la partie qui vous manque estIProgressMonitor#travaillé(int)
qui va "grandir", la barre de progression. Ci-dessous un exemple de code qui devrait clarifier comment l'utiliser:Il ressemblera à quelque chose comme ceci:
Pour votre cas particulier de l'utilisation de
Utils.saveToFile
vous pourriez main laIProgressMonitor
cette méthode et d'appeler laworked()
méthode à partir de là.FutureTask
et "interrogés" laisDone
ajoutant1
à lamonitor.worked(1);
pour rendre la tâche de la barre de croître.Je veux afficher des progrès tout en 1 fichier est mis à jour.Mais je me demande si c'est inapproprié dans eclipse applicationas long as the execution time really justifies using a progress bar
.Intéressant commentaire.Tu veux dire que dans mon cas, c'est peut-être trop?Quelle autre option serait plus approprié pour une action qui pourraient retarder?IProgressMonitor.UNKNOWN
comme mentionné dans votre question.