Bonjour,
Bon, je ne reviens pas sur le détails technique (mais important)
souligné par ymca2003. Si je comprend bien, tu envoies un message à la
deuxième thread pour qu'elle s'arrête, mais tu veux le faire seulement
lorsqu'elle est en attente ? Si tu n'as aucun "
GetMessage" ailleurs dans ta boucle
while, tu n'as pas à attendre qu'elle soit en attente. En effet, le
GetMessage va
chercher les messages dans une file d'attente, donc lorsque la première
thread envoie son message, le message est placé dans la file, et la
thread ira le récupéré au prochain
GetMessage (s'il n'y a pas d'autres messages en attente avant). Tu n'as donc pas besoin de faire une pause avec la fonction
Sleep.
Maintenant, pour terminer la deuxième thread, il suffit de quitter la boucle
while avec un
break; et la procédure se termine en retournant 0 (enfin, probablement le savais-tu déjà :).
Enfin, si tu veux attendre que la deuxième thread soit terminée avant
de terminer la première, tu peux utiliser la boucle suivante dans la
1ère procédure juste après avoir posté ton message
(la variable
hThread2 représente le handle de la deuxième thread) :
DWORD dw_exit_code;
do
{
GetExitCodeThread(hThread2, &dw_exit_code);
} while(dw_exit_code==STILL_ACTIVE);
ainsi, dès que la deuxième thread est terminée, la première se termine aussi.
ciao,
-- Virtual Dust --