MFC & Threads problème de compréhension - C++ - Programmation
Marsh Posté le 22-04-2009 à 21:06:03
si la classe A a une methode prenant un void* et renvoyant un void*, sa signature est :
void* A::*(void*)
notez comment le type de la classe intervient dans la signature.
Or les PAI C de threading windows attendent certainement un void*(void*) quie st incomaptible. Donc soit tu passe par une methode statiqeu soit t'es baissé.
utilise donc plutot Boost.Thread
Marsh Posté le 22-04-2009 à 22:36:32
Daccord je vais me renseigner sur Boost.Thread, merci de tas réponse.
Marsh Posté le 23-04-2009 à 09:47:04
Je viens de regarder Boost.Thread mais ca fait appel a une installation tiers, ce dont je ne peut pas me permettre.
J'ai donc passé toute mes fonctions membres en fonction simple.
Il y a t'il moyen pour un fonction simple d'accéder a un objet d'une class ?
je voudrais par exemple ecrir dans un rich text de ma fenetre MFC. Je doit donc accéder a CMiMainView::RichText1.AppendText("test" );
Marsh Posté le 23-04-2009 à 10:55:03
bah tu passe le *this de ton objet en parametre à ton thread
Marsh Posté le 22-04-2009 à 20:10:52
Bonjour,
Je programme une MFC, ou j'ai besoin d'implémenter plusieurs threads, je comprend leur fonctionnement mais je croix qu'un aspect du C++ m'échappe, je m'explique:
Voici le cas ou cela marche parfaitement, c'est à dire une fonction simple, lancer par CreateThread:
Comme on peut le voir c'est une fonction membre de la classe CMiMainView qui lance une fonction simple ThreadProc dans un thread.
Si maintenant au lieu de lancer une fonction simple je veux lancer une autre fonction membre de la même classe:
DWORD WINAPI CMiMainView::SendPackets(LPVOID lpParameter)
J'ai une erreur à la compilation me disant qu'il manque des arguments pour la fonction CMiMainView::SendPackets...
Après quelques recherches j'ai cru comprendre qu'il fallait déclarer cette fonction membre 'static', mais comme elle fait appel a plusieurs autres fonctions membres de la classe CMiMainView cela me pose problème car je n'y aurait plus accès.
J'ai trouver quelques briques d'explications sur developpez.com http://cpp.developpez.com/faq/vc/? [...] rkerThread mais je ne comprend pas vraiment...
Ma question est donc :
Comment puis-je m'y prendre pour lancer un thread d'un fonction membre dans une autre fonction membre de la même classe ?
Je suis débutant en C++, je développe sous visual studio 2005 sur un XP Pro
Message édité par gaellm le 22-04-2009 à 20:13:39