J'ai une amélioration en ajoutant:
wxSocketBase::Initialize();
dans la fonction "bool OnInit()" de "class WXDLLEXPORT wxTCPEventHandlerModule: public wxModule". (Cette classe se trouve dans le fichier sckipc.cpp de la lib wxwidgets)
L'erreur "wxYield called recursively" apparait maintenant à un seul endroit:
wxTCPEventHandler::Server_OnRequest(..) => msg = codeci->Read8();
wxDataInputStream::Read8(..) => m_input->Read(&buf, 1);
wxInputStream::Read(..) => read = OnSysRead(p, size);
wxSocketInputStream::OnSysRead(..) =>size_t ret = m_i_socket->Read((char *)buffer, size).LastCount();
wxSocketBase::Read(..) => m_lcount = _Read(buffer, nbytes);
wxSocketBase::_Read(..) => if ( !(m_flags & wxSOCKET_BLOCK) && !WaitForRead() )
wxSocketBase::WaitForRead(..) => return _Wait(seconds, milliseconds, GSOCK_INPUT_FLAG | GSOCK_LOST_FLAG);
wxSocketBase::_Wait(..) => PROCESS_EVENTS();
wxYield() => return wxTheApp && wxTheApp->Yield();
wxApp::Yield(..) ==> wxFAIL_MSG( wxT("wxYield called recursively" ) );
Cela se produit lorsque deux clients se connectent en même temps..
Partager