2010-11-03 5 views
0

J'essaie de créer un thread et de le laisser s'exécuter jusqu'à ce que mon principal le signale pour démarrer, ce que je pense est fait avec SetEvent. Mais le code dans le thread n'est jamais exécuté. Voici le code que j'ai dépouillé (je pense) des fonctions sans rapport. L'algorithme est-il correct? Voici ce que j'ai pensé qu'il a fait:Impossible d'exécuter mon thread avec SetEvent et WaitForSingleObject

Lorsque le thread principal est créé, ce qui signifie qu'il fonctionnera en arrière-plan. Lorsque l'événement est défini (SetEvent), le thread le récupère sur WaitForSingleObject, puis exécute le code dans le thread, n'est-ce pas?


HANDLE hThread;              
HANDLE Event; 

DWORD Thread() 
{ 
while(1) 
    { 
    wait = WaitForSingleObject(Event, INFINITE) 
    //This is where I want to execute something 
    } 
} 


int _tmain() 
{ 
    DWORD dw; 
    int i; 


    Event = CreateEvent(NULL,false,false,NULL); 
    hThread = CreateThread(NULL,0,Thread,EventA,0,NULL);    

    while(1) 
     { 
     if (condition is correct) 
      { 
      SetEvent(Event); 
      } 


     CloseHandle(Thread); 
     CloseHandle(Event); 
     } 

    return 0; 
} 

Merci d'avoir lu.

Répondre

1

Déplacez les lignes CloseHandle hors de la boucle while.

+0

\ o/Merci beaucoup mon pote :) – BlaBla