Savoir si l'exécution du thread est terminée

[Résolu]
Signaler
Messages postés
557
Date d'inscription
dimanche 25 septembre 2005
Statut
Membre
Dernière intervention
10 mai 2014
-
Messages postés
557
Date d'inscription
dimanche 25 septembre 2005
Statut
Membre
Dernière intervention
10 mai 2014
-
Bonjour,

Comment savoir si l'exécution de mon thread est terminée (=la fonction à terminée son exécution) :

HANDLE hCrypter = CreateThread( NULL, 0, Crypter, 0, 0, NULL );

Merci d'avance et à bientôt !

4 réponses

Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
29
#define WM_ENDTHRD  (WM_USER+1)


DWORD WINAPI ThreadProc(LPVOID pparam)
{
  // ...
  // ...
thrdExit:
  PostMessage((HWND) pparam, WM_ENDTHRD, 0, (LPARAM) pdwd);
  return 0;
}


hthrd = CreateThread(0, 0, ThreadProc, (LPVOID) hdlg, 0, 0);

ciao...
BruNews, MVP VC++
Messages postés
1910
Date d'inscription
vendredi 18 juin 2004
Statut
Modérateur
Dernière intervention
14 novembre 2014
13
Salut,
Il est également possible d'utiliser WaitForSingleObject() pour connaitre l'état d'un thread.
Une remarque pour BruNews. Je pense qu'il est péférable d'utiliser WM_APP au lieu de WM_USER pour définir les messages personnalisés. En effet, WM_USER est réservé à l'usage interne des controles personnalisés. D'ailleurs tous les common controls de Windows utilisent les messages du type WM_USER+N. Pour éviter tout risque de conflit pouvant provoquer des anomalies, on définit des messages de type WM_APP+N qui sont spécifiques à l'application.
Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
29
Exact, la rigueur ne nuit pas.

ciao...
BruNews, MVP VC++
Messages postés
557
Date d'inscription
dimanche 25 septembre 2005
Statut
Membre
Dernière intervention
10 mai 2014
3
Et bien merci pour vos réponses !