Donc non, c'est systématiquement au 2ième puis 3ième, etc que ca merde, ca marche toujours au premier test (1 test = 1 acquisition + 1 perte de com).
Un timer, je n'arrive pas vraiment à comprendre comment tu veux le faire fonctionner, car actuellement c'est justement le TimeOut qui détecte qu'on perd la com, et déclenche le processus de sauvegarde.
Sinon pour l'EDT, il me semble avoir essayé, normalement toute l'application respecte ce fonctionnement (c'est un oscillo en Swing..... ;-) ).
J'ai tenté de remplacer le :
if (JOptionPane.showConfirmDialog(......) == JOptionPane.YES_OPTION)
par cette méthode :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| boolean confirmation() throws InterruptedException {
class Dialoguer implements Runnable {
public boolean confirme;
public void run() {
if ( JOptionPane.showOptionDialog(.....) == JOptionPane.YES_OPTION)
confirme = true;
else
confirme = false;
}
}
Dialoguer dialogue = new Dialoguer();
try {
SwingUtilities.invokeAndWait(dialogue);
}
catch (java.lang.reflect.InvocationTargetException e) {
e.printStackTrace();
}
return dialogue.confirme;
} |
A l'execution ceci me retourne une exception d'invocation.
et si je l'execute dans l'EDT mon thread oscillo se termine avant qu'il affiche la popup et donc ferme la fenetre avant de faire la sauvegarde.
En faite ce que je ne comprends pas c'est ça:
code A ....
maJDialog.setVisible(true);
code B ....
Normalement on execute code A, puis on affiche la JDialog avant d'executer code B, et c'est seulement quand la JDialog est fermée que l'execution de code B reprend, non ???
Partager