Attendre avant de poursuivre - Java - Programmation
Marsh Posté le 28-07-2004 à 13:18:27
java.lang.Thread. sleep(long millis)
Marsh Posté le 28-07-2004 à 13:21:58
oulà, j'avais pas vu. Il faut pas faire ça dans un event handler, sinon, tu bloques toute l'interface graphique.
Marsh Posté le 29-07-2004 à 06:53:30
| nraynaud a écrit : oulà, j'avais pas vu. Il faut pas faire ça dans un event handler, sinon, tu bloques toute l'interface graphique.  | 
 
 
En effet, ca bloque l'interface graphique, comment faire alors?
Marsh Posté le 29-07-2004 à 10:10:07
Plusieurs possibilités 
 
1- essaie celle-là 
 
while(!flag){ 
 
try{ 
wait(); 
}catch(Exception exc){} 
 
}//end while
Marsh Posté le 29-07-2004 à 10:18:45
excuse fausse manip 
 
plusieurs possibilités 
1- try-catch avec wait 
 
while(!flag){ 
 
try{ 
wait(); 
}catch(Exception exc){} 
 
}//end while 
 
par contre il faut declarer flag comme un boolean de type volatile que tu modifiera pour pouvoir continuer 
 
 
2- la méthode Thread.sleep(nombredemillisecondes) devrait aussi marcher 
 
3- tu recuperes le temps courant de la machine 
t1=System.currentTimeMillis(); 
 
ensuite tu fais une boucle dans laquelle 
 tu ne fais rien 
 
while(System.currentTimeMillis()<t1+Delta); 
 
Delta etant le temps que tu voudrais attendre  
 
je pense que mes soltutions te seront utiles 
 
  
Marsh Posté le 29-07-2004 à 11:47:27
si tu veux pas bloquer ton UI, il faut créer un thread (ou un processus, mais le thread ici c'est mieux) dans lequel tu exécutes le code (pense à créer des mutex et autres locks histoire d'éviter l'exécution de plusieurs threads identiques et accès à des données en cours de création/modification). 
 
en gros: 
 
UI 
| 
| 
action 
|\ 
UI\ 
|.thread de traitement (en // avec le thread de base contenant l'UI) 
|.| 
|.| 
|.| 
|.| 
|.| 
|.Fin du traitement 
|.Kill du thread de traitement 
| 
| 
 
de cette manière, le traitement de l'action ne bloque pas l'UI et un sleep ne pose aucun problème (il fait pauser le thread secondaire mais pas l'UI)
Marsh Posté le 29-07-2004 à 12:20:35
| ruready a écrit : En effet, ca bloque l'interface graphique, comment faire alors?  | 
il sert à quoi ton arrêt ?
Marsh Posté le 28-07-2004 à 13:15:43
Bonjour,
J'aimerai attendre qq secondes dans mon code, c'est a dire suspendre l'execution du code.
J'ai essayé d'utilisé la classe Timer, mais comment "bloquer" l'execution? car j'arrive à "faire" qqchose apres un certain temps :
mais moi je voudrais juste bloquer l'execution du "code":
genre:
je vois pas.
j'espere que mes explications sont pas trop brouillon...
merci d'avance