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
|
HANDLE THREAD::LancerThread(LPVOID parametres, UINT *pId);
{
//Création d'une structure :
//Allocation dynamique ou attente de confirmation du thread.
//Dans cet exemple, allocation dynamique
st_threadParams *pParams = new st_threadParams;
pParams->pObj = this;
pParams->parametres = parametres;
//NOTE: Utiliser de préférence _beginthreadex() dans process.h
//Car on utilise la C Run-Time Library...
//return CreateThread(NULL, 0, SThreadProc, pParams, 0, NULL);
return reinterpret_cast< HANDLE >(
_beginthreadex(NULL, 0, SThreadProc, pParams, 0, pId)
);
}
UINT WINAPI THREAD::SThreadProc(LPVOID pvParams)
{
st_threadParams * pParams = static_cast<st_threadParams*>(pvParams);
//Lecture de la structure de paramètres
THREAD *pObj = pParams->pObj;
LPVOID parametres = pParams->parametres;
//...
//traitement éventuel sur la structure de paramètres:
//delete par exemple, ou encore activation d'un event dans la fonction appelante...
//Dans cet exemple, delete
delete pParams;
//Appel de la procédure de thread
return pObj->VThreadProc(parametres);
} |
Partager