Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1845 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  MFC & Threads problème de compréhension

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

MFC & Threads problème de compréhension

n°1876421
gaellm
Posté le 22-04-2009 à 20:10:52  profilanswer
 

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:

Code :
  1. void CMiMainView::OnConnectButtonClicked()
  2. {
  3. HANDLE hThread;
  4. DWORD dwThreadId;
  5. DWORD dwThreadParam = 1 ;
  6. DWORD WINAPI ThreadProc(LPVOID lpParameter);
  7. hThread = CreateThread ( NULL, NULL, ThreadProc, &dwThreadParam, 0, &dwThreadId );
  8.        return;
  9. }


 
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)
 

Code :
  1. void CMiMainView::OnConnectButtonClicked()
  2. {
  3. HANDLE hThread;
  4. DWORD dwThreadId;
  5. DWORD dwThreadParam = 1 ;
  6. hThread = CreateThread ( NULL, NULL, CMiMainView::SendPackets, &dwThreadParam, 0, &dwThreadId );
  7.      
  8.        return;
  9. }


 
J'ai une erreur à la compilation me disant qu'il manque des arguments pour la fonction CMiMainView::SendPackets... :pfff:  
 
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
mood
Publicité
Posté le 22-04-2009 à 20:10:52  profilanswer
 

n°1876470
Joel F
Real men use unique_ptr
Posté le 22-04-2009 à 21:06:03  profilanswer
 

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

n°1876538
gaellm
Posté le 22-04-2009 à 22:36:32  profilanswer
 

Daccord je vais me renseigner sur Boost.Thread, merci de tas réponse.
 

n°1876620
gaellm
Posté le 23-04-2009 à 09:47:04  profilanswer
 

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" );

n°1876667
Joel F
Real men use unique_ptr
Posté le 23-04-2009 à 10:55:03  profilanswer
 

bah tu passe le *this de ton objet en parametre à ton thread


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  MFC & Threads problème de compréhension

 

Sujets relatifs
Problème d'envoi de mail avec phpprobleme de rafraichissement d'un JPanel
Probleme de Footer...MFC, récuperation d'une adress IP
[JavaScript] problème de "closure" (résolut)[C][GTK] Problème de signal_connect
Probleme de redirection avec OVH et classeproblème boucle while
Problème de (gros...) debutantProblème de gestion de stock sous excel 2007
Plus de sujets relatifs à : MFC & Threads problème de compréhension


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR