| 12
 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