attente de threads pour rendre la main + swing - Java - Programmation
Marsh Posté le 14-10-2004 à 00:45:05
il faut que tu mémorises les thread qui tu créent et quand tu as fini de les lancer, tu les join
Marsh Posté le 14-10-2004 à 17:07:08
Je vois pas exactement ce que je dois faire avec ta réponse. Pour l'instant, j'ai fais ceci :
Code :
|
Mais là, mon textarea qui doit ajouter au fur et à mesure les path des fichiers trouvés (l'ajout se passe dans addResult), ainsi qu'un label indiquant quel chemin est en court de recherche, ne se mettent plus à jour (ainsi que le bouton 'recherche' sensé se griser etc.), sans doute le thread swing bloqué.
Hint ?
Marsh Posté le 14-10-2004 à 17:10:23
mainThread qui les joins direct après leurs lancement tu veux dire ? (comme ça, là, il les auras tous join, donc attendra qu'il se terminent tous.. si j'ai bien compris ;o)
Marsh Posté le 14-10-2004 à 19:05:00
Bon, en fait, j'ai utiliser un ThreadGroup, (en attribut, "searchThreads" ) comme ceci :
Code :
|
et dans search(), une boucle (ca me parait pas très propre :\) :
Code :
|
Le seul problème là, c'est que le thread swing a l'air bloqué, il n'ajoute pas visuellement mes résultats, et ne fait pas d'autres choses qu'il est sensé faire.. Y'a juste que quand la recherche est fini, hop, tout s'affiche normalement. J'ai été voir du côté de SwingUtilities, mais rien ne me convient j'ai l'impression.
Que faire ?
Marsh Posté le 14-10-2004 à 20:43:30
j'avais pas vu le swing dans le titre !!!!
y'a SwingWorker pour ça !!!!
http://java.sun.com/docs/books/tut [...] reads.html
Marsh Posté le 14-10-2004 à 22:32:05
Ahhh, voilà !! C'est pile poil, au millimètres près ce qu'il me fallait ! Ca marche impecc' maintenant, trop merci !
Marsh Posté le 13-10-2004 à 23:57:10
Bonjour, j'ai beau chercher, je ne trouve pas comment faire.
Il s'agit d'une recherche de fichiers dans une arborescence, voici le bout du code incriminé :
Or, là, il quitte rapidement la méthode search(), c'est normal car le thread principal (celui qui analyse l'arborescence directe du noeud root) s'est terminé. Or, ses fils continuent eux de fonctionner. Je voudrai que le mainThread rende la main quand tous ses fils soient terminés, mais je n'y arrive pas. Cependant, lors de la création d'un thread fils (quand on tombe sur un répertoire quoi), je ne veux pas que le parent direct attende son fils, utiliser des threads perdrait tous son sens.
Y'a t il une solution, ou dois je faire en séquentielle pour ne pas avoir de problème ?
Merci.
Message édité par andOceans le 14-10-2004 à 19:06:56