View Single Post
Old 01-02-2006, 12:26   #11
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Ad esempio:
Codice:
DWORD WINAPI ProvaThread(LPVOID pExitCheck)
{
  bool &exitCheck = (bool)*pExitCheck;
  for(......)
  {
     if(exitCheck)
        break;
  }
  return 0;
}


Per creare il worker thread:

bool exitCheck = false;
HANDLE hThread = CreateThread(NULL, 0, ProvaThread, &exitCheck, 0, NULL);
Puoi semplicmente interromepere l'esecuzione del thread settando exitCheck a true...

Se vuoi che ProvaThread faccia parte di una classe deve essere dichiarato come static... In tal caso ti conviene passare al posto di exitCheck un puntatore a this (visto che è static altrimenti può accedere a soli membri static) e con quello accedere a tutta la classe...

Tanto per farti un esempio:
Codice:
DWORD WINAPI MiaClasse::ProvaThread(LPVOID pMiaClasse)
{
  MiaClasse &miaClasse = (MiaClasse)*pMiaClasse;
 
  miaClasse.eseguiCiclo();
  
  return 0;
}

Ultima modifica di cionci : 01-02-2006 alle 12:39.
cionci è offline   Rispondi citando il messaggio o parte di esso