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

C++Builder Discussion :

Thread Probleme pour l'arret


Sujet :

C++Builder

  1. #1
    Membre expérimenté

    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    1 138
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 138
    Points : 1 504
    Points
    1 504
    Par défaut Thread Probleme pour l'arret
    Ben deux problemes pour demarrer la journée
    Re bonjour donc,
    J'ai un thread (tthread) qui contient une boucle infinie (ecoute d'unr reseau..).
    A un moment donné je voudrais pouvoir stopper l'ecoute en tuant le thread.
    On Terminate ne parait repondre qu'a un evenement signalé par le thread lui meme.

    J'aimerais conaitre la maniere la plus propre de le faire si possible.

    Merci d'avance

  2. #2
    ubu
    ubu est déconnecté
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2002
    Messages : 38
    Points : 47
    Points
    47
    Par défaut
    Bonjour,

    Pour terminer un TThread, il faut appeler sa méthode
    Cet appel va faire passer l'attribut Terminated à true. Il faut donc dans la boucle infinie tester la valeur de cet attribut.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    while (!Terminated)
    {
      ... // instruction de la boucle infinie... 
    }
    L'évenement OnTerminate sera déclenché après le retour de la méthode Execute.

    Je ne sais pas si cela répond à la question, car c'est vraiment la base du TThread...

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    171
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2003
    Messages : 171
    Points : 97
    Points
    97
    Par défaut
    la méthode utilisé par ubu marche tres bien mais tu peux aussi le gerer avec un booléen

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    while(!stop)
    {
    // instruction de la boucle infinie... 
    }
    stop étant un booléen en acces protected par exemple ce qui te donne un acces plus facile pour l'arret des dialogues.

    Tu peux aussi coupler les 2 ce qui est mon cas pour mon appli.

    Bonne continuation

  4. #4
    JEG
    JEG est déconnecté
    Membre éclairé
    Avatar de JEG
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    211
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 211
    Points : 727
    Points
    727
    Par défaut
    pas besoin de ou autres conditions d'arret, teminate arrete le thread de toute facon

    voici le code de mon thread

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    while(true)
    {
                    Sleep(1);        
                    Synchronize(maMethode);
    }
     
    void maMethode()
    {
                    checksocket(...);
    }
    voici son instanciation

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
            MonThread * mainThread = new MonThread(true);
            mainThread->FreeOnTerminate = true;
    et pour l'arreter et le détruire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
            mainThread->Terminate();
    et ca marche tres bien (Terminate() marche bel et bien aussi en appel externe)

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

Discussions similaires

  1. Probleme pour stopper un thread
    Par BriocheNC dans le forum Windows Forms
    Réponses: 4
    Dernier message: 15/06/2009, 11h33
  2. [Thread] Probleme pour arreter des threads
    Par Djobird dans le forum Concurrence et multi-thread
    Réponses: 4
    Dernier message: 15/02/2008, 21h31
  3. Thread problème pour l'arreter
    Par rvzip64 dans le forum Langage
    Réponses: 8
    Dernier message: 12/07/2005, 10h51
  4. probleme a l'arret de threads
    Par Sei dans le forum C++Builder
    Réponses: 5
    Dernier message: 16/12/2002, 12h15

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