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