Bonjour,
j'ai des problèmes avec l'ordre d’exécution de mes tâches.
Je m'explique:
1/ J'ai initialement créer une classe Annotation afin de renvoyer diverses info depuis un fichier:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
public class Annotion {
	public List<Variant> main(File file) {
		return annote(file);
	}
	private List<Variant> annote(File file){
		List<Variant> listVar = new ArrayList<Variant>();
		//ma fonction ici...
		return listVar;
	}
}
2/ Jusque là pas de problème. J'ai voulu ajouter une barre de progression, et ai donc mis la fonction dans une tâche:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
public class Annotion {
	private List<Variant> listVar = new ArrayList<Variant>();
 
	public List<Variant> main(File file) {
		//Tâche
		Task task = new Task<Void>() {
		    @Override public Void call() {
		    	listVar = annote(file);
		        return null;
		    }
		};
		//Indicateur de progression
		ProgressIndicator bar = new ProgressIndicator();
		bar.progressProperty().bind(task.progressProperty());
		Group root = new Group();
		Scene scene = new Scene(root, 300, 250);
        	Stage stage = new Stage();
        	stage.setScene(scene);
        	stage.setTitle("Progress Controls");
        	scene.setRoot(bar);
        	stage.show();
	        //Début de la tâche
		Thread t = new Thread(task);
		t.start();
		//Retour de la liste mise à jour
		return listVar;
	}
	private List<Variant> annote(File file){
		List<Variant> listVar = new ArrayList<Variant>();
		//ma fonction ici...
		return listVar;
	}
}
J'ai alors rencontré un problème: la tâche commence, avec une belle barre de progression, puis retourne la liste... alors que la tâche n'est pas finie! Et donc la liste loin d'être complête!
3/ J'ai essayé de resoudre ça en attendant que la tâche se termine:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
public class Annotion {
	private List<Variant> listVar = new ArrayList<Variant>();
	private Boolean running;
 
	public List<Variant> main(File file) {
		//Tâche
		Task task = new Task<Void>() {
		    @Override public Void call() {
		    	listVar = annote(file);
		        return null;
		    }
		};
		//Indicateur de progression
		ProgressIndicator bar = new ProgressIndicator();
		bar.progressProperty().bind(task.progressProperty());
		Group root = new Group();
        	Scene scene = new Scene(root, 300, 250);
        	Stage stage = new Stage();
        	stage.setScene(scene);
        	stage.setTitle("Progress Controls");
        	scene.setRoot(bar);
        	stage.show();
        	//Début de la tâche
		running = true;
		Thread t = new Thread(task);
		t.start();
		//Attendre la fin de la tâche
		while (running){}
		//Retour de la liste mise à jour
		return listVar;
	}
	private List<Variant> annote(File file){
		List<Variant> listVar = new ArrayList<Variant>();
		//ma fonction ici...
		running = false;
		return listVar;
	}
}
Nouveau problème: la barre de progression est vide... jusqu'à ce que la tâche finnisse! J'ai fini par comprendre que la barre de progression ne commence à "tourner" que lorsque toute la méthode est exécutée...

A ce point, je suis à cours d'idée qur comment faire. Quelqu'un aurait une solution?
Merci!