IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les r�ponses en temps r�el, voter pour les messages, poser vos propres questions et recevoir la newsletter

MFC Discussion :

Acc�s � une m�thode static depuis un thread


Sujet :

MFC

  1. #1
    Membre confirm�
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    177
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 177
    Par d�faut Acc�s � une m�thode static depuis un thread
    Bonjour � tous!

    Je sollicite votre aide car je n'arrive pas � me sortir de la situation suivante:
    J'ai une classe de type CDialog qui contient un pointeur static sur elle-m�me
    Gr�ce a ce pointeur, j'acc�de � certains de ses contr�les depuis des m�thodes static d�clar�es dans cette m�me classe.
    Tout fonctionne tr�s bien lorsque j'appelle ces m�thodes de la fa�on suivante:

    CMaClass::UpdateProgressBarPos(20)

    Mais cela provoque un crash d�s que j'essai de faire la m�me chose depuis un thread.

    L� o� je ne comprends pas, c'est que les adresses des objets impact�s, dans la m�thodes static, semblent bonnes. Pourtant, je suis syst�matiquement envoy� sur un "Assertion Failed"

    Quelqu'un aurait-il une id�e pour acc�der � ces objets graphique depuis mon thread?

    Merci d'avance

  2. #2
    R�dacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en s�curit�
    Inscrit en
    Mai 2007
    Messages
    11 517
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 62
    Localisation : France, Haute Garonne (Midi Pyr�n�es)

    Informations professionnelles :
    Activit� : Consultant en s�curit�
    Secteur : High Tech - Op�rateur de t�l�communications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Par d�faut
    Citation Envoy� par fantomchris Voir le message
    J'ai une classe de type CDialog qui contient un pointeur static sur elle-m�me
    Bizarre et �trange ta mani�re de faire !!

    ton pointeur il pointe sur quoi quand aucun dialogue n'a �t� cr�� , NULL je suppose.

    ton pointeur il pointe sur quoi quand plusieurs dialogues ont a �t� cr��, le dernier je suppose.

    Ensuite quels sont les objets du CDialog que tu tente d'acc�der. le CWnd de ton CDialog par exemple n'est probalement pas valide dans ton thread
    Raymond
    Vous souhaitez participer � la rubrique R�seaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs syst�me et r�seau � configurer leurs �quipements SNMP r�seau.
    e-verbe Un logiciel de conjugaison des verbes de la langue fran�aise.

    Ma page personnelle sur DVP
    .

  3. #3
    Membre confirm�
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    177
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 177
    Par d�faut
    En fait, si je comprends bien, cela voudrait dire qu'un pointeur vers une adresse donn�e, n'est pas valable dans un autre thread que celui qui l'a cr��?
    Pourtant une adresse est une adresse non?

    Bref, ma seule question est : comment faire pour acc�der � l'objet graphique d'une classe CDialog depuis un thread lanc� avec AfxBeginThread?

    Merci d'avance

  4. #4
    R�dacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en s�curit�
    Inscrit en
    Mai 2007
    Messages
    11 517
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 62
    Localisation : France, Haute Garonne (Midi Pyr�n�es)

    Informations professionnelles :
    Activit� : Consultant en s�curit�
    Secteur : High Tech - Op�rateur de t�l�communications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Par d�faut
    Je suppose que ta variable static est du type CDialog * ou quelquechose comme cela.

    Comme je te l'ai dit pr�c�demment, un CWnd * ne se passe pas d'un thread � l'autre. Je suis d'accord, ce sont des pointeurs mais avec un contexte qui lui appartient au thread courant.

    Si tu veux partager tes fen�tres entre thread, il faut partager le HANDLE de fen�tre.

    Donc ton membre static devrait �tre un HANDLE il doit �tre initialis� avec this->m_hWnd.
    Raymond
    Vous souhaitez participer � la rubrique R�seaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs syst�me et r�seau � configurer leurs �quipements SNMP r�seau.
    e-verbe Un logiciel de conjugaison des verbes de la langue fran�aise.

    Ma page personnelle sur DVP
    .

  5. #5
    Membre confirm�
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    177
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 177
    Par d�faut
    Bon ok...
    Je crois comprendre l'id�e...

    Mais comment acc�der aux contr�les d'une fen�tre simplement avec un HANDLE?

  6. #6
    R�dacteur
    Avatar de farscape
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes C�te d'Azur)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Par d�faut
    salut tu peux envoyer un message priv� a la fenetre a partir du thread pour r�aliser le boulot.
    voir faq:http://cpp.developpez.com/faq/vc/?pa...d#WorkerThread

  7. #7
    Membre confirm�
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    177
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 177
    Par d�faut
    AAAHHHH!!! Je n'y ai pas pens� une seule seconde.
    J'�tais bloqu� sur ma solution "static" alors que les �v�nements �taient l�.
    Merci de votre aide

    J'essaie de faire fonctionne le bousin et je mets en r�solu si j'y arrive

  8. #8
    Membre confirm�
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    177
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 177
    Par d�faut
    MERCI!!!

    C'est exactement ce qu'il me fallait, et je suis d'autant plus vert que je suis pass� sur cette partie de la FAQ sans penser que �a pouvait me d�bloquer. C'est parfait!

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. R�ponses: 2
    Dernier message: 11/02/2012, 08h57
  2. R�ponses: 5
    Dernier message: 18/09/2008, 17h20
  3. acc�s concurrents � une m�thode static
    Par chamamo dans le forum C#
    R�ponses: 1
    Dernier message: 07/04/2008, 15h28
  4. R�ponses: 3
    Dernier message: 19/03/2008, 09h38
  5. Acc�s � une m�thode static
    Par demcoul dans le forum Langage
    R�ponses: 3
    Dernier message: 22/03/2007, 17h55

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo