Mise en attente du thread principal
Bonjour,
Pas très à l'aise en Swing et plus particulièrement dans la gestion des threads, je vous soumets mon problème.
J'ai actuellement une application client-serveur qui tourne.
Lorsque je clique sur "Quitter", une boîte de dialogue demande à l'utilisateur s'il veut sauvegarder les modifications avant de quitter (comportement standard).
Cela dit, l'enregistrement peut être long et j'ai donc besoin que la fenêtre attende la fin de l'enregistrement pour se fermer (et donc fermer le thread principal)
Actuellement j'ai ceci :
Code:
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
|
protected void quitter() {
int reponse = JOptionPane.showConfirmDialog(vue, _resourceMsg
.getString("ConfirmationSauvegarde.Message"), _resourceIHM
.getString("ConfirmationSauvegarde.Titre"), JOptionPane.YES_NO_CANCEL_OPTION,
JOptionPane.QUESTION_MESSAGE, ihm.Icones.QUESTION);
if (reponse == JOptionPane.YES_OPTION) {
enregistrerTout();
} else if (reponse == JOptionPane.CANCEL_OPTION) {
return;
}
} else {
int reponse = JOptionPane.showConfirmDialog(vue, _resourceMsg
.getString("ConfirmationQuitter.Message"), _resourceIHM
.getString("ConfirmationQuitter.Titre"), JOptionPane.YES_NO_OPTION,
JOptionPane.QUESTION_MESSAGE, ihm.Icones.QUESTION);
if (reponse == JOptionPane.NO_OPTION) {
return;
}
}
// SYNCHRO A FAIRE
vue.dispose();
} |
et enregistrerTout() s'effectue dans un thread à part avec barre de progression. Je voudrais donc attendre la fin de ce thread pour fermer ma fenêtre principal mais j'ai essayé avec un sémaphore, cela ne fonctionne pas.
Pourriez vous m'orienter sur la façon la plus propre de faire cela ?
Merci par avance,