Salut,

Dans une application que je développe, j'ai besoin de créer un thread qui va exécuter en permanence une fonction d'Update. N'y connaissant pas grand chose en multithreading C++, je me suis servi de cet article : http://www.codeproject.com/KB/thread...gTutorial.aspx

Je bosse sur du code qui est dans une DLL, et je n'ai pas accès à la fonction main() de mon appli. Je crée mon thread dans une fonction Initialize() d'une classe C++ :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
 
unsigned	l_Id;
DWORD		l_ExitCode;
 
m_ThreadHandle = (HANDLE) _beginthreadex( NULL, 0, StaticUpdate, this, CREATE_SUSPENDED, &l_Id );
 
ASSERT( m_ThreadHandle != 0 );
 
GetExitCodeThread( m_ThreadHandle, &l_ExitCode );
 
ResumeThread( m_ThreadHandle );
Ici, m_ThreadHandle est une variable de classe de type HANDLE. Le thread se crée correctement et effectue bien l'appel à StaticUpdate(). Cependant, dès que la fonction Initialize() qui crée ce thread se termine, mon thread meurt. Je peux éviter ca en mettant un WaitForSingleObject( m_ThreadHandle, INFINITE ); à la fin de mon Initialize(), mais dans ce cas là je ne sors plus jamais de cette méthode, ce qui est gênant ^^.

J'aimerais savoir comment je peux indiquer à mon thread qu'il ne doit pas mourir dès que la fonction qui l'a créé est terminée, et qu'il ne meure que lorsque je le demande explicitement. Est-ce possible ?

Merci d'avance,

Hurricanes.