Bonjour,
J'ai un petit souci avec l'utilisation des threads.
Mon programme contient en fait un socket, qui doit recevoir des donn�es, pour ceci je cr�� un thread afin de ne pas bloquer le reste du programme.
Mon socket est d�clar� comme membre priv� de ma classe, et j'ai une m�thode, publique, qui permet de lancer le thread d'�coute de donn�es.
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7
8 class Socket { public: Socket(); ~Socket(); void EcouteDonnees(); private: SOCKET sock; };Le seul probl�me maintenant, c'est que je ne sais pas "comment" faire mon thread... Je m'explique :
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5 void Socket::EcouteDonnees() { DWORD ThreadId; CreateThread(NULL, 0, ThreadEcouteDonnees, NULL, 0, &ThreadId); }
- Soit je cr�� un thread "normal", donc un thread externe � ma classe, mais � ce moment je ne pourrai pas acc�der au membre "sock" de me classe, donc impossible de lire des donn�es.
- Soit je cr�� mon thread comme �tant une m�thode de ma classe, c'est ce que j'ai fait, mais j'obtiens alors une erreur de ce type :
A noter que le code de cr�ation du thread est exactement le m�me que ci-dessus. La d�finition de mon thread :....(42) : error C2664: 'CreateThread' : cannot convert parameter 3 from 'unsigned long (void *)' to 'unsigned long (__stdcall *)(void *)'
Voil�, si quelqu'un a une id�e lumineuse, je suis tout ou�e...
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5 DWORD WINAPI Socket::ThreadEcouteDonnees(LPVOID lParam) { .... return 0; }
Merci !
Partager