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

Langage Delphi Discussion :

Threads : probleme de Terminate


Sujet :

Langage Delphi

  1. #1
    Nouveau membre du Club
    Inscrit en
    Avril 2004
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 32
    Points : 30
    Points
    30
    Par défaut Threads : probleme de Terminate
    Bonjour à tous !

    Les threads me posent quelques difficultés ! En effet, à la destruction de ma form, j'appel la méthode Terminate de ma thread. Cette thread a été créee de la manière suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
      inherited Create(false);  
      Arret:=false;
      FreeOnTerminate:=true;
      Priority:=tpHighest;
    Methode execute de ma thread :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
      repeat
        ....
      until Terminated;
      arret:=true;
    Cependant, ma thread n'est pas détruite à la fermeture de mon appli. Plus bizarre, lorsque je fais un pas-à-pas, la thread est détruite....
    J'ai donc tenté de terminer ma thread et d'attendre ensuite qu'elle soit bien détruite (boucle infinie) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
        l_Thread.Terminate;
        repeat
          sleep(100); //pour donner a la Thread le temps de se terminer
        until l_thread.arret;
    Quelqu'un pourrait-il m'expliquer cette bizzarerie ?

    Merci.

  2. #2
    Membre éclairé
    Avatar de MD Software
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    613
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 613
    Points : 680
    Points
    680
    Par défaut
    D'abord, Thread est masculin

    Bon, alors ... l'appel à Terminate ne provoque pas l'arrêt instantanné du thread. Le contenu de la méthode execute se termine avant. Ensuite, tu as placé FreeOnTerminate à true, ce qui veut dire que ton until l_thread.arret; s'appui sur un objet potentiellement détruit.

  3. #3
    Nouveau membre du Club
    Inscrit en
    Avril 2004
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 32
    Points : 30
    Points
    30
    Par défaut
    Merci de ces remarques pertinentes...

    Mais je n'ai pas de violation d'accès car l'objet existe toujours.... c'est bien mon problème...

  4. #4
    Nouveau membre du Club
    Inscrit en
    Avril 2004
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 32
    Points : 30
    Points
    30
    Par défaut
    Je viens de trouver mon problème...

    J'appelais "suspend" avant la méthode Terminate et donc le thread ne se terminait pas...

    Merci quand même

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

Discussions similaires

  1. [Thread] Probleme avec mon Timer
    Par Nico66 dans le forum EDT/SwingWorker
    Réponses: 10
    Dernier message: 02/06/2005, 17h10
  2. [Débutant][Threads] Problème de synchronisation
    Par sephile dans le forum Concurrence et multi-thread
    Réponses: 4
    Dernier message: 02/01/2005, 23h29
  3. Problème de terminal
    Par elekis dans le forum Applications et environnements graphiques
    Réponses: 7
    Dernier message: 03/09/2004, 18h58
  4. [THREAD] probleme de pipe
    Par mehdiyassin dans le forum Concurrence et multi-thread
    Réponses: 5
    Dernier message: 01/07/2004, 13h50
  5. Thread Probleme pour l'arret
    Par Raideman dans le forum C++Builder
    Réponses: 3
    Dernier message: 15/04/2004, 12h17

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