[Thread] Savoir qd un thread se termine

Savoir qd un thread se termine [Thread] - C++ - Programmation

Marsh Posté le 27-01-2005 à 12:15:35    

Bonjour
 
Je tente desesperement de faire la chose suivante :
 
mon appli lance un thread, pendant que le thread travail de son coté, l'utilisateur a le droit de faire d'autres choses. Et je voudrais qu'a la fin du thread, le thread principal reprenne la main et execute une action particuliere.
 
Je fais developpe en MFC sous visual une appli MDI.
J'arrive a lancer le thread, a le killer si necessaire, mais je n'arrive pas à lancer un evenement, ou un message pour avertir la fenetre principale que le thread a fini son travail.
 
Comment dois je faire ?
 
Merci d'avance

Reply

Marsh Posté le 27-01-2005 à 12:15:35   

Reply

Marsh Posté le 27-01-2005 à 12:53:57    

Bonjour,
 
je ne sais pas exactement comment marche les Threads, mais des fois en ajoutant un booléen dans ton programme initialisé false, puis en le mettant à true à la fin de ton thread ça devrait marcher nan ?
 
En pseudo c++ (comme j'ai dit je ne connais pas trop la prog des threads).
 

Code :
  1. boolean threadFini = false;
  2. int main(int argc, car* argv[]){
  3.    lancerThread();
  4.    while(!threadFini){
  5.      if (threadFini){
  6.        lancerEvennement();
  7.      }else{
  8.        progUtilisateur();
  9.      }
  10.    }
  11. }
  12. void lancerThread(){
  13.    // gestion du thread
  14.    ...
  15.    // à la fin:
  16.    threadFini = true;
  17. }
  18. void lancerEvennement(){
  19.    ...
  20. }
  21. void progUtilisateur(){
  22.    ...
  23. }


 
En même temp je ne sais pas exactement ce que tu veux faire, si c'est juste pour avertir que ton thread est fini, ajoute

Code :
  1. #include <windows.h>


à ton prog et à la fin de ton thread met:

Code :
  1. MessageBox(NULL,"Thread fini.","Info",MB_OK|MB_ICONEXCLAMATION);


Message édité par grostony le 27-01-2005 à 12:58:48
Reply

Marsh Posté le 27-01-2005 à 13:01:08    

je ne m'y connais pas trop non plus d'ou ma question :)
 
Moi j'aurais plutot fait :
1. ma fenetre MFC se lance
2. l'utilisateur lance la tache (donc je lance le thread)
3. il fait tout ce qu'il veut
4. le thread se termine tout seul
5. il lance un evenement
6. la fenetre recupere cet evenement (ou ce message?) et rafraichi l'affichage
 
et ce que je ne sais pas faire c'est les etapes 5 et 6

Reply

Marsh Posté le 28-01-2005 à 18:22:32    

Bein en mettant simplement une MessageBox à la fin de ton thread ça ne te va pas (sinon je ne sais pas s'il y a une gestion de barre de status dans les MFC mais tu peux aussi y faire afficher dedans si c'est le cas, au moins l'utilisateur n'aura pas à cliquer) ? Il y aura bien un évenement et l'utilisateur pourra continuer ce qu'il fait.

Reply

Marsh Posté le 28-01-2005 à 20:48:26    

tu peux poster un message à ta fenetre principale.
 
regarde du coté de AfxGetMainWnd, PostMessage.
 
reste a gérer ca dans ta fenetre principale, avec une MESSAGE_MAP kivabien.

Reply

Marsh Posté le 28-01-2005 à 23:12:01    

SquiZZ => ouais c'est la solution que j'ai adopté sauf que je voulais envoyer un message directement a ma classe view et la c'est un peu galere mais j'ai trouve un truc dans la msdn de microsoft qui disait comment faire donc merci c'est resolu :)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed