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 :

récupérer la valeur de sortie d'un thread


Sujet :

Langage Delphi

  1. #1
    Membre régulier
    Inscrit en
    mars 2002
    Messages
    240
    Détails du profil
    Informations forums :
    Inscription : mars 2002
    Messages : 240
    Points : 102
    Points
    102
    Par défaut récupérer la valeur de sortie d'un thread
    le thread principal de l'application lance un thread de calcul - Question :
    peut-on récupérer et tester la valeur de sortie de ce thread (celle de ReturnValue) dans le gestionnaire d'événement OnTerminate (ici HandleTerminate) ? j'ai essayé sans succès ceci :

    procedure TPrimeFrm.HandleTerminate(Sender: TObject);
    begin
    ...
    if NewThread.WaitFor = 1 then // du code
    ...
    end;

    l'application "bloque" !!! avez-vous une idée du pb ?

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    juin 2002
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : juin 2002
    Messages : 16
    Points : 19
    Points
    19
    Par défaut
    Le problème est que WaitFor attent la fin du thread, alors que dans le gestionnaire OnTerminate le thread est déjà terminé... donc ça va attendre indéfiniment...

    Tu peux simplement tester la valeur de la propriété ReturnValue dans ton gestionnaire d'événement. Mais il faut déclarer cette propriété comme public dans la classe de ton thread (protected dans la classe de base), par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    type
      TNewThread = class(TThread)
      private
        { Déclarations privées }
      protected
        procedure Execute; override;
      public
        property ReturnValue;
      end;
     
    ...
     
    procedure TPrimeFrm.HandleTerminate(Sender: TObject); 
    begin 
      ... 
      if NewThread.ReturnValue = 1 then // du code 
      ... 
    end;

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    mars 2002
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : mars 2002
    Messages : 19
    Points : 19
    Points
    19
    Par défaut
    Salut,

    Pour récupérer le code de sortie d'un thread => GetExitCodeThread (cf. aide en ligne sur les API) et GetExitCodeProcess pour le process terminé.

    A+

    Didier

  4. #4
    Membre régulier
    Inscrit en
    mars 2002
    Messages
    240
    Détails du profil
    Informations forums :
    Inscription : mars 2002
    Messages : 240
    Points : 102
    Points
    102
    Par défaut
    Merci à vous

Discussions similaires

  1. Réponses: 4
    Dernier message: 19/08/2014, 11h25
  2. Récupérer une valeur d'un thread java
    Par ealias dans le forum Langage
    Réponses: 2
    Dernier message: 02/03/2011, 11h30
  3. [thread] Récupérer la valeur d'un JTextField
    Par _xme_ dans le forum Débuter
    Réponses: 0
    Dernier message: 27/09/2010, 11h08
  4. Récupérer valeur de sortie d'une procédure et Problème bizarre
    Par mercure07 dans le forum SQL Procédural
    Réponses: 0
    Dernier message: 03/12/2008, 17h02
  5. [VB.net][OleDB]récupérer la valeur d'un parametre de sortie
    Par glanumf dans le forum Accès aux données
    Réponses: 4
    Dernier message: 17/10/2006, 18h09

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