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 :

pb AfxBeginThread bloquant


Sujet :

MFC

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Décembre 2006
    Messages : 8
    Par défaut pb AfxBeginThread bloquant
    Bonjour,

    Je développe une application sous VC++ avec les MFC et j’utilise le code de la FAQ suivant pour créer un Thread.

    http://c.developpez.com/faq/vc/?page...keWorkerThread

    J’utilise la fonction AfxBeginThread() et le code de la class CWorkerThread

    Mon problème et que mon application principale est figé lorsque le thread est lancé.
    Sachant que j’ai copié texto le code je ne comprends pas pourquoi l’application qui crée le thread se bloque jusqu'a la fin de l'execution du thread.

    Sinon sa compile et sa fonctionne sauf que c’est séquentiel et non multithread.

  2. #2
    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,
    dans cet exemple,
    la variable thread doit etre une donnée membre de la classe qui gere le thread.
    la sequence :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    // l'arrêter
        if ( thread.Stop() )
        {
            // récupérer le résultat
            CString s;
            s.Format( "%d ms", thread.ExecutionTime );
            AfxMessageBox( s );
        }
        else
        {
            AfxMessageBox( "Le thread a été tué" );
    }
    est à utiliser lorsque l'on veut arreter le thread ,
    par exemple sur le destructeur de la classe qui gére le thread.
    pour plus de souplesse je modifierai le lancement comme suit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    CWorkerThread::CWorkerThread():
        m_StopThread( false ),
        ExecutionTime( 0 )
    {
        // depart du thread
    //    this->m_Thread = AfxBeginThread(WorkerThreadLauncher, this);
    }
    CWorkerThread::RunThread()
    {
         this->m_Thread = AfxBeginThread(WorkerThreadLauncher, this);
    }
    j'ai enlevé le lancement du thread dans le constructeur ,
    et rajouté une fonction pour lancer le thread.
    dans le cas d'une boite de dialogue par exemple on aura donc:
    une donnée membre pour le workerThread
    et le lancement du thread par sa méthode RunThread dans OnInitDialog.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Décembre 2006
    Messages : 8
    Par défaut
    Salut farscape,

    Je te remercie de ta réponse et en effet le problème viens de la façon dont je lance et je stop le thread.

    Depuis ce matin je travaille sur la façon dont lancer toutes cette artillerie.


    En effet j'avais pas tout compris sur la façon de le stopper

    Merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Processus bloquant un fichier
    Par KORTA dans le forum Windows XP
    Réponses: 8
    Dernier message: 04/09/2012, 12h55
  2. [C#] ouvrir une fenetre "bloquante"
    Par Johan31 dans le forum ASP.NET
    Réponses: 6
    Dernier message: 26/02/2004, 11h48
  3. Réponses: 5
    Dernier message: 24/01/2004, 12h53
  4. [API] Communication série NON-bloquante : OVERLAPPED/Thread
    Par Rodrigue dans le forum C++Builder
    Réponses: 2
    Dernier message: 07/11/2003, 13h43
  5. SendMessage bloquant l'exécution du programme
    Par Drooxy dans le forum API, COM et SDKs
    Réponses: 2
    Dernier message: 03/05/2003, 19h26

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