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 :

Cause d'un plantage de DoModal ?


Sujet :

MFC

  1. #21
    Membre averti
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    57
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2008
    Messages : 57
    Par défaut
    bonjour,
    je crois bien que ce post est en train de m'éclairer sur des problèmes que j'ai déjà rencontré..

    envoyé par farscape
    hé bien c'est encore pire ....
    tu ne peux pas lancer une boite de dialogue dans un thread de travail...
    Je n'ai pas compris pourquoi on ne pouvait pas ?

    Par ailleurs je n'ai pas compris non plus le commentaire suivant :

    http://cpp.developpez.com/faq/vc/?page=ProcessThread

    Comment créer un thread de travail ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    // IMPORTANT: si vous appelez des fonctions membres
    // ou modifiez des données membres de CWorkerThread
    // veillez à que leur utilisation soit thread safe
    // car Execute() s'execute dans un autre thread contrairement
    // aux autres fonctions qui sont appelées depuis le thread principal
    // En particulier, il ne faut surtout pas appeler Stop()
    Disons que je ne vois pas les conséquences de l'appel du stop dans le thread de travail

  2. #22
    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,
    la réponse à la première question:
    http://cpp.developpez.com/faq/vc/?pa...d#WorkerThread
    notamment:
    Citation Envoyé par faq
    Donc bien retenir la règle suivante :
    On ne peut pas partager des objets MFC liés aux fenêtres ou d'objets GDI entre plusieurs threads de service.
    On passera le handle de fenêtre en paramètre dans la fonction AfxBeginThread pour établir le lien avec la fenêtre de traitement.
    cela s'applique aussi aux dialogues modales...

    la deuxième:
    on ne peut appeler stop car cela provoquerai un dead lock ,
    puisque stop attend que le thread se finisse ,mais son appel est fait dans la boucle de traitement ... on pourra attendre longtemps.

  3. #23
    Membre confirmé
    Inscrit en
    Janvier 2005
    Messages
    76
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Janvier 2005
    Messages : 76
    Par défaut
    Je continue sur ce sujet car c'est la suite qui pose problème maintenant ...

    Donc j'ai créé plusieurs messages privés qui font chacun leur boulot ...
    Le problème c'est que les fonctions affectés aux messages doivent obligatoirement etre exécuter l'une après l'autres ...

    J'ai bien tenté de faire du code caca ... mais j'aimerais savoir avec quoi je peux demander a une fonction d'attendre ...

    J'ai pensé à un Event ... mais je ne suis pas sur :s

  4. #24
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Par défaut
    Ben, c'est pas mal un CEvent pour synchroniser deux threads. D'ailleurs, c'est fait pour ça...

  5. #25
    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,
    oui un event est une solution, tu as des exemples dans la faq.
    il suffit d'armer l'event dans le thread d'appeler la fonction par message privé
    et de faire un WaitForSingleObject infini sur l'event.
    celui-ci étant relâché par la fonction initiée par le thread quand elle a finit son traitement...

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. Plantage applet java à cause d'un socket
    Par malag dans le forum Entrée/Sortie
    Réponses: 8
    Dernier message: 29/01/2007, 12h49
  2. [MFC] Plantage au deuxieme DoModal() avec TIMER
    Par ricky78 dans le forum MFC
    Réponses: 3
    Dernier message: 25/09/2006, 16h17
  3. [debutant] plantage a cause du cosntructoeur et destructeur
    Par Battosaiii dans le forum Débuter
    Réponses: 11
    Dernier message: 12/11/2005, 19h13
  4. plantage a cause de CString::Format
    Par e-teo dans le forum MFC
    Réponses: 2
    Dernier message: 18/10/2005, 18h02
  5. [Oracle 9.1] Plantage SQL+ à cause d'une requête
    Par ftrifiro dans le forum Oracle
    Réponses: 8
    Dernier message: 04/10/2005, 15h08

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