1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
|
// IMPORTANT: si vous appelez des fonctions membres
// ou modifiez des données membres de CWorkerThread
// veillez à que leur utilisation soit thread safe
// car Execute() s'execute dans un autre thread contrairement
// aux autres fonctions qui sont appelées depuis le thread principal
// En particulier, il ne faut surtout pas appeler Stop()
UINT CWorkerThread::Execute()
{
// exemple de code à exécuter
DWORD start = ::GetTickCount();
do
{
// code de traitement
::Sleep( 1000 ); // simuler une opération de 1 sec
// Faire appel à un CALLBACK
m_pCallBackFct(...)
} while ( this->m_StopThread == false ) ;
DWORD end = ::GetTickCount();
// renvoyer un résultat : temps d'exécution
this->ExecutionTime = end - start;
return 0;
}
// m_pCallBackFct pointe sur une fonction du genre...
void MyFunction()
{
if (...)
{
MyWorkerThread.Stop();
}
} |
Partager