thread MFC, communication - C++ - Programmation
Marsh Posté le 17-05-2005 à 14:46:07
je c'est pas si tu as regardé la msdn...si oui en ouvrant les yeux ca devrait aller beaucoup mieux alors!!
genre regarder le retour AfxBeginThread!!
...maintenant faut voir aussi ce que tu entends par ID?
Marsh Posté le 18-05-2005 à 14:30:10
j'ai reglé ce problème... mais j'en ai un autre! depuis que je lance plusieurs threads, je n'ai plus d'actualisation d'affichage!
tout d'abord, je commence par lancer les threads :
Code :
|
et
voila la partie qui pose problème je pense :
Code :
|
Marsh Posté le 20-05-2005 à 08:58:22
peut etre parce que ton thread consomme entierement les ressources cpu.
met un sleep(1) dans ton thread pour voir si ca vient de la, si c'est le ca essai d'ameliorer en gerant la priorité.
Marsh Posté le 20-05-2005 à 10:02:58
Code :
|
attente active, c'est mal. Regarde du côté des event et de WaitForMultipleObjects. Ou mieux dans ton cas, génère un message perso depuis tes threads que tu vas intercepter comme un message normal depuis ton code MFC afin de mettre à jour l'interface.
Ta boucle est dans ton thread principal je suppose, c'est elle qui bloque ton code d'interface. Il faut quitter la fonction où tu te trouve pour rendre la main aux MFC afin qu'elles gèrent l'interface.
Marsh Posté le 20-05-2005 à 14:11:47
merci pour vos réponses, mais depuis que j'utilise "WaitForMultipleObjects", le programme se bloque au second passage dans la boucle (j'utilise bien le setEvent et ResetEvent). Le plus "rigolo" c'est que quand je met des points d'arrêt en mode debug, ça fonctionne... quand je les enleve ça ne marche plus : le prog se bloque!
Marsh Posté le 20-05-2005 à 15:31:26
Ben oui il faut rendre la main aux MFC de temps en temps pour qu'elles gèrent les messages. C'est pour ça que je te disais d'utiliser des messages. Sinon ben tu peux utiliser MsgWaitForMultipleObjects pour détecter que y'a des messages à traiter.
Marsh Posté le 20-05-2005 à 15:55:26
ce qui bloquait c'était le "WaitForSingleObject(_threads[i]->m_hThread, 100);" : le problème c'est que mon prog principal doit attendre la fin des thread, mais doit aussi réagir aux messages que les threads lui envoient! et même si un thread envoie un message par PostMessage, alors le prog principal se bloque et attend : il ne rentre pas dans la fonction associé au message! comment faire?
Marsh Posté le 20-05-2005 à 21:37:34
ReplyMarsh Posté le 23-05-2005 à 10:05:50
il faut utiliser "MsgWaitForMultipleObjects" à la place de "WaitForMultipleObjects" ?
Marsh Posté le 17-05-2005 à 12:06:57
Bonjour,
Je travaille sous visual et j'aimerai savoir :
Est ce qu'une la fonction qui est appelé par un thread avec "AfxBeginThread(fonction, fenetre)" peut récuperer l'ID du thread qui l'execute?