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 :

TThread et waitfor - descripteur non valide


Sujet :

Langage Delphi

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    181
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 181
    Points : 162
    Points
    162
    Par défaut TThread et waitfor - descripteur non valide
    Lut,

    Voila, j'ai un probleme avec un TThread. En fait, le thread en lui même fonctionne parfaitement bien. Le probleme c'est lorsque j'utilise sa méthode waitfor, je l'ai implémanté de cette façon la pour le débugage :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
                    MonThread:= TMonThread.Create(Fileout);
                    Thread.WaitFor;
    Delphi me renvoit alors une exeception EThread, erreur de thread : descripteur non valide(6).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
                    MonThread:= TMonThread.Create(Fileout);
                    Thread.Suspend;
    Je précise au passage que les autres méthodes suspend, resume fonctionnent (conf ci dessus).


    Est ce que ça peut etre lié au constructor, voila ce que j'utilise :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    constructor TThreadprincipal.Create(Currentpb_temp:integer; Url_temp:string; Filename_temp:string);
    begin
      inherited Create(False);
      FreeOnTerminate := True;
    end;
    PhpMyObject teck leader
    http://pmo.developpez.com

    La justice de l'intelligence est la sagesse. Le sage n'est pas celui qui sait beaucoup de choses, mais celui qui voit leur juste mesure.

  2. #2
    Membre expérimenté

    Inscrit en
    Mai 2002
    Messages
    720
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 720
    Points : 1 594
    Points
    1 594
    Par défaut
    Hihi ! Je suis tombé dessus cet aprèm

    En fait, cela vient du FreeOnTerminate... Comme tu le met a True, lorsque la procédure execute se termine, le thread est libéré (Jusque là, c'est normal). Saut que WaitFor quand le Thread devient égal à nil... Il n'apprécie guère !

    Il suffit donc de ne pas mettre le FreeOnTerminate et de bien penser a libérer le thread manuellement

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    with TMonThread.Create(Fileout) do
    try
      WaitFor; 
    finally
      Free;
    end;
    Bon développement

    Smortex

    Les FAQ Assembleur - Linux
    In The Beginning Was The Command Line Neal Stephenson

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    181
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 181
    Points : 162
    Points
    162
    Par défaut
    Effectivement ça fonctionne bien.

    Je suis arrivé à la meme conclusion, il y a quelques minutes en forçant le thread à s'autoterminer (ça fait très terminator ) )

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ExitThread(Thread.threadid);
    Mais bon, je vais essayer d'implemanter ta méthode, avec le with, ça sera plus propre.
    PhpMyObject teck leader
    http://pmo.developpez.com

    La justice de l'intelligence est la sagesse. Le sage n'est pas celui qui sait beaucoup de choses, mais celui qui voit leur juste mesure.

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

Discussions similaires

  1. [JDBC]ResultSet:Index de descripteur non valide
    Par etiennegaloup dans le forum JDBC
    Réponses: 8
    Dernier message: 20/04/2018, 17h10
  2. [WD15] Descripteur non valide
    Par Yolak dans le forum WinDev
    Réponses: 1
    Dernier message: 24/01/2011, 14h23
  3. Réponses: 4
    Dernier message: 23/12/2008, 09h40
  4. Réponses: 7
    Dernier message: 03/09/2007, 12h57
  5. IOException : Descripteur non valide
    Par akrobat dans le forum API standards et tierces
    Réponses: 4
    Dernier message: 20/06/2006, 09h12

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