Bonjour, c'est encore moi ^^"
D�cidement chaque fois que je r�gle un probl�me, j'en ai un autre ;_;
J'utilise des sockets dans des threads, pour pouvoir utiliser les notifications d'�v�nements comme le OnReceive, il faut faire un detach du handle du socket avant de rentrer dans la thread, et faire un attach(handle) � l'initialisation de la thread.
Jusque l� tout va bien, mais je n'ai aucune notification qui se d�clenche, je ne comprends pas vraiment pourquoi �a ne fonctionne pas.
Je mets la code de mon appel de thread :
pThreadReceive = (MyThreadRS*)AfxBeginThread( RUNTIME_CLASS( MyThreadRS ), THREAD_PRIORITY_NORMAL, 0, CREATE_SUSPENDED);
Mon code de detach et de resume thread (dans ma thread principale) :
1 2
| hConnected = incomingSock->Detach();
pThreadReceive->ResumeThread(); |
Et le code de ma thread :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
| BOOL MyThreadRS::InitInstance()
{
Connection *m_connect = new Connection;
m_sConnected.Attach(hConnected);
TRACE("MyThreadRS::InitInstance\n");
if (!AfxSocketInit())
{
return FALSE;
}
InitFile();
while(true)
{
SingleStep();
Sleep(2000);
}
m_sConnected.Detach();
return TRUE;
}
void MyThreadRS::SingleStep()
{
ARGUMENTS MyArguments;
if(!m_pArOut->IsBufferEmpty())
{
m_pArOut->Write(&MyArguments, sizeof(ARGUMENTS));
m_pArOut->Flush();
TRACE("MyThreadRS::SingleStep : m_pArOut Flush\n");
}
TRACE("MyThreadRS::SingleStep\n");
}
void MyThreadRS::InitFile()
{
m_pFile = new CSocketFile(&m_sConnected);
m_pArIn = new CArchive(m_pFile,CArchive::load);
m_pArOut = new CArchive(m_pFile,CArchive::store);
TRACE("MyThreadRS::InitFile\n");
} |
Le Sleep n'est l� que pour ne pas avoir trop de trace en �x�cution.
En plus, au d�but de l'enclenchement de ma thread, je fais un flush d'une structure vide mais �a passe en �x�cution.
Je devrais avoir des notifications d'�v�nement normalement mais je n'en ai pas...
Peut etre que j'ai mal compris ce qu'il est mis dans MSDN... (je mets les liens au cas o�)
http://support.microsoft.com/default.aspx?scid=kb;EN-US;175668
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dv_wcemfc4/html/aflrfcsocketcolcolattach.asp
Si quelqu'un connait le probl�me, ce serait gentil de m'aider, je d�sesp�re l� ;_;
Partager