SWT, récupérer le thread principal dans un autre thread.

dvoraky Messages postés 744 Date d'inscription dimanche 1 avril 2007 Statut Membre Dernière intervention 9 mai 2010 - 29 janv. 2009 à 10:37
dvoraky Messages postés 744 Date d'inscription dimanche 1 avril 2007 Statut Membre Dernière intervention 9 mai 2010 - 29 janv. 2009 à 15:15
Salut la compagnie,

Bon je m'explique : J'ai un programme qui sert à prendre des rendez, des rappels etc... Mon problème concerne les rappels. Vous savez comme dans Outlook, les rappels affichent une petite MessageBox à l'écran pour vous prévenir de ce rappel.
Bon très bien.
Dans mon programme, je saisi mon rappel, ensuite, en arrière plan, il y a un thread qui se lance toutes les secondes (avec un Timer) et qui va comparer tous les rappels avec l'heure courante.
Si jamais un rappel correspond à l'heure courante, je voudrais afficher une message box...

Seulement, dans le thread qui compare les heures, je n'ai pas accès au thread qui contient l'interface graphique, enfin je ne peux pas lier mon MessageBox au shell principal.
Donc voilà, comment pourrais je faire pour afficher une messageBox tout en partant de cette thread?

Merci

<hr width="100%" size="2" />
 C'est après des heures de codage que j'ai compris pourquoi les créateurs de Java ont choisi une tasse de café comme logo...

5 réponses

super_toinou Messages postés 764 Date d'inscription mardi 25 mai 2004 Statut Membre Dernière intervention 8 mars 2011 6
29 janv. 2009 à 14:00
Hello,

est ce que tu ne peux pas utiliser un swingworker dans ce cas?
Ca me semble assez adapté.

Pour l'accès à la couche graphique, tu peux peut etre passer pas un pattern Observer/Observable pour décorréler tes interactions graphiques des non graphiques.

++ Toinou
0
dvoraky Messages postés 744 Date d'inscription dimanche 1 avril 2007 Statut Membre Dernière intervention 9 mai 2010 8
29 janv. 2009 à 14:10
J'utilise SWT. Je sais que je pourrais mélanger un peu mais bon je préfère faire autrement... (en fait je sais pas si il y a vraiment un rapport, mais comme ça s'appelle SWINGworker, je me dis que c'est pour swing... j'me trompe?)

Mais, je pense avoir trouvé... Avec le display du thread principal, j'appelle mon thread de vérification des heures via la méthode asyncExec(Runnable) qui permet de partager les ressources graphiques.

Je teste et j'en dis plus.
super_toinou, tu peux me renseigner quand même sur SwingWorker? Mon préjugé est faux ou pas?

<hr width="100%" size="2" />
 C'est après des heures de codage que j'ai compris pourquoi les créateurs de Java ont choisi une tasse de café comme logo...
0
super_toinou Messages postés 764 Date d'inscription mardi 25 mai 2004 Statut Membre Dernière intervention 8 mars 2011 6
29 janv. 2009 à 14:20
Hello,

effectivement c est dans un package swing, pour l'interaction avec swt je ne pense pas que ça gène puisque le rôle du SwingWorker et d'effectuer l'action "au bon moment" dans l'event dispatch thread.

T'as un très bon arcticle (et en français s'il te plait ) qui parle de ca voir ici
0
super_toinou Messages postés 764 Date d'inscription mardi 25 mai 2004 Statut Membre Dernière intervention 8 mars 2011 6
29 janv. 2009 à 14:21
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
dvoraky Messages postés 744 Date d'inscription dimanche 1 avril 2007 Statut Membre Dernière intervention 9 mai 2010 8
29 janv. 2009 à 15:15
Re,

Alors, avec un SwingWorker, j'ai pas réussi à faire fonctionner mon appli... Je dois être un branque mais pô réussi....
Le truc où je bloque avec le SwingWorker, c'est pour l'appeler périodiquement.

Par exemple, en ce moment, j'utilise un Timer pour appeller le run de mon deuxieme thread pour tester s'il est l'heure ou pas.
Ma classe pour ce second Thread est extends de TimerTask ce qui me permet de scheduler le run dans le Timer créé facilement.

Comment on peut scheduler de la même manière avec un SwingWorker?

<hr width="100%" size="2" />
 C'est après des heures de codage que j'ai compris pourquoi les créateurs de Java ont choisi une tasse de café comme logo...
0
Rejoignez-nous