Voila mon problème .
J'ai 2 applis qui échangent des données via un socket . L'appli qui questionne est en C++ (MFC) et celle qui
répond en VB . Jusqu'ici rien de méchant .
Mon appli C++ pose une question :
MainSocket.Send("QUESTION");Puis attend la réponse de l'appli VB , mais avec un timeout de 2s , donc on doit sortir
de la boucle si on a des données dans le MainSocket , ou bien au bout des 2s (variable bTimeOut) .
Ca marche assez bien , mais si l'appli VB ne répond pas , et malgré le "PeekMessage" qui revient donc
à peu près au même qu'un DoEvents j'ai quand même la CPU qui monte à 50% environ , et mon menu
déroulant est comme "figé" .
J'ai entendu parler de Threads , mais je ne vois pas très bien ce que ça pourrait faire .
CWinApp* pApp = AfxGetApp();
MSG msg;
// Boucle d'attente (maxi 2 secondes)
do
{
// Récupère l'heure courante
ActualTime = CTime::GetCurrentTime();
// Regarde le nombre de secondes écoulées depuis le lancement (je sais
// à minuit ça va planter)
nsec = ActualTime.GetSecond() - BeginTime.GetSecond();
// Si on a passé 2 secondes alors Timeout pour sortir de la boucle
if (nsec > 2) bTimeout = true ;
// DoEvents
while ( PeekMessage ( &msg, NULL, 0, 0,PM_NOREMOVE )) pApp->PumpMessage();
}
while (MainSocket.m_strRecv.IsEmpty() && bTimeout == false);
Merci d'avance pour votre aide .