Pb d'evenement (HEVENT)

Résolu
cs_AlexMAN Messages postés 1536 Date d'inscription samedi 21 décembre 2002 Statut Membre Dernière intervention 24 mai 2009 - 31 oct. 2004 à 00:51
cs_AlexMAN Messages postés 1536 Date d'inscription samedi 21 décembre 2002 Statut Membre Dernière intervention 24 mai 2009 - 31 oct. 2004 à 10:45
Bonsoir,

Je trouve le comportement de ceci assez anormal (ou c moi ki suis pas normal ?!) : Lorsk je fais un SetEvent(), au lieu de simplement quitter la boucle (do {...} while(WaitFor..);), il me 'termine' le thread (pas vraiment puis ce ke le thread n'est pas detruit), donc il saute les instructions ki suivent la boucle...C'est normal ?

do {
sck_cust = accept(sck, (struct sockaddr *)&sin_cust, &len);} while (INVALID_SOCKET sck_cust && WAIT_TIMEOUT WaitForSingleObject(hevent, 10L));
strcpy(szOtherIP, inet_ntoa(sin_cust.sin_addr));
MessageBox(0, szOtherIP, 0, 0);
EndDialog(hwait, 0);
CloseHandle(hevent);
End:
closesocket(sck);
WSACleanup();
PostMessage(hdlg, WM_ENDTHR, 0, 0);
return 0;
}

Merci d'avance

++

3 réponses

cosmobob Messages postés 700 Date d'inscription mardi 30 décembre 2003 Statut Membre Dernière intervention 27 janvier 2009 4
31 oct. 2004 à 10:11
ca doit surement rester bloqué, vu que ca peut le faire au niveau du accept et au niveau du WaitForSingleObject.
pour débloquer ton thread:
shutdown(sck, SD_BOTH);
closesocket(sck);
SetEvent(hevent);

a++ ;)
3
cosmobob Messages postés 700 Date d'inscription mardi 30 décembre 2003 Statut Membre Dernière intervention 27 janvier 2009 4
31 oct. 2004 à 10:06
salut,
non c'est pas normal. si vraiment ca te fait ca, l'erreur doit etre ailleurs. (hevent est bien un event cree avec CreateEvent, pas le handle du thread?)
es tu sur que ca ne reste pas bloqué? (et donc ton thread ne se termine en fait jamais, ce qui expliquerait que les lignes suivantes soient sautées. mets un messageBox avant et apres sck_cust = accept pour tracer l'execution)

a++ ;)
0
cs_AlexMAN Messages postés 1536 Date d'inscription samedi 21 décembre 2002 Statut Membre Dernière intervention 24 mai 2009 1
31 oct. 2004 à 10:45
bah en fait, je viens de m'apercevoir que accept etait blockant, donc c normal, ca reste blocké, jsuis bete...En tt cas, je te remercie, paske ce que tu m'as donné marche ;)

Merci encore

++
0
Rejoignez-nous