Bonjour à tous,
Je développe une application MFC qui communique avec plusieurs serveurs (11 précisément), pour chaque connexion y a un thread qui gère la socket de communication avec le serveur.

L’association entre thread et socket se fait comme suit:
Thread.cpp
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 
BOOL CThread::InitInstance()
{
M__sock = new CMyAsyncSocket();	//CMyAsyncSocket dériver de CAsyncSocket
return TRUE;
}
L’application ce charge de lancer le thread et de connecter la socket au serveur. Le problème est que j’essaye d’implémenter un mécanisme de socket bloquante (puisque certaines commandes à envoyer aux serveurs sont bloquantes), j’envoie donc la commande au serveur et je reste en attente.
L’application envoie la commande socket fait un WaitForSingleObject est attent un setevent qui est dans le onreceive de CMyAsyncSocket.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
 
m__StatusTermineEvent = CreateEvent(NULL,false,false,"CLNT_CMD_LECTURE_THREAD_TERMINE");
. . . 
. . .
. . . 
DWORD ResultatAttente = WaitForSingleObject(m__StatusTermineEvent,30000); 
. . . 
. . .
. . .
Le problème est que le WaitForSingleObject bloque aussi mon thread du coup il n’acceder pas à onreceive et donc pas de setevent .


Comment remedier à ça ?


MERCI,