Utilisation de CreateThread c++
Bonjour,
Je souhaite créer un Thread avec CreateThread().
Ce thread a pour but d'envoyer des messages toutes les N secondes (avec N qui varie de 2 à 15).
J'ai créé le thread de cette manière:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
|
c_treatment::c_treatment()
{
thread_ok = true;
DWORD dwThreadId = 0;
HANDLE th = CreateThread(NULL, 0, myThread, (LPVOID)this, 0, &dwThreadId);
}
DWORD WINAPI myThread(LPVOID arg)
{
c_treatment *tr = (c_treatment *)arg;
while (tr->thread_ok)
{
tr->updateMessage();
}
return 0;
} |
Le thread est actif pendant 30 minutes à peu près (le paramètre thread_ok vaut "true" au début, puis "false" au bout de 30 minutes).
Mais dès que le thread est actif, je n'ai plus la main sur mon application (par exemple pour cliquer sur un bouton).
Je suppose que c'est à cause de la boucle infinie contenue dans le thread.
Je suppose que normalement le thread ne devrait pas bloquer de cette manière l'application...
J'ai ajouté un Sleep(200) dans le while comme ceci:
Code:
1 2 3 4 5 6 7 8 9 10
| DWORD WINAPI myThread(LPVOID arg)
{
c_treatment *tr = (c_treatment *)arg;
while (tr->thread_ok)
{
tr->updateMessage();
Sleep(200);
}
return 0;
} |
Cela ne bloque plus mon application mais je ne trouve pas cette solution très "propre".
Qu'en pensez-vous ?
Merci d'avance pour vos réponse.