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 :

TThread::WaitFor


Sujet :

C++Builder

  1. #1
    Membre averti
    Inscrit en
    Novembre 2004
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 11
    Par défaut TThread::WaitFor
    bonsoir,

    Voila, j'ai deux threads et je voudrais tout simplement lancer l'exécution
    du deuxième à la fin de l'exécution du premier.
    Je pense qu'il faut se servir de WaitFor (pour le deuxième?) mais alors là,
    les choses se compliquent car j'ai pas trouvé d'exemple clair...


    Quelqu'un peu m'éclairer là-dessus :
    -> comment le premier active le second
    -> les histoires de TimeOut etc.

    merci

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 41
    Par défaut
    salut,

    Tu peut utiliser WaitFor mais ton Interface sera bloquée en attenant la fin du thread1 je ferais plutot quelque chose du type :

    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    //---------------------------------------------------------------------------
     
    #include <vcl.h>
    #pragma hdrstop
     
    #include "Unit1.h"
    #include "Unit2.h"
    #include "Unit3.h"
     
    //---------------------------------------------------------------------------
    #pragma package(smart_init)
    #pragma resource "*.dfm"
    TForm1 *Form1;
    MaClasseThread_1 * T1;
    MaClasseThread_2 * T2;
    //---------------------------------------------------------------------------
    __fastcall TForm1::TForm1(TComponent* Owner)
       : TForm(Owner)
    {
       T1 = new MaClasseThread_1(true);
       T1->OnTerminate=LancerT2;
       T2 = new MaClasseThread_2(true);
     
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
       LancerT1(this);
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::LancerT1(TObject * Sender)
    {
       T1->Resume();
    }
    void __fastcall TForm1::LancerT2(TObject * Sender)
    {
       T2->Resume();
    }

  3. #3
    Membre éprouvé Avatar de .:morgoth:.
    Profil pro
    Inscrit en
    Février 2005
    Messages
    124
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 124
    Par défaut
    Tu peux créer le 2eme thread et l'exécuter a partir de la methode OnTerminate() de ton 1er thread :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    //thread1.cpp
     
    void __fastcall TThread1::OnTerminate ()
    {
      TThread2 *t2=new TThread2 ();
      t2->Execute ();
    }

  4. #4
    Membre averti
    Inscrit en
    Novembre 2004
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 11
    Par défaut
    ok merci, ça marche bien comme ça.

    Par contre est-ce que je peux gerer des Time Out du thread 1 de cette manière?

  5. #5
    Membre éprouvé Avatar de .:morgoth:.
    Profil pro
    Inscrit en
    Février 2005
    Messages
    124
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 124
    Par défaut
    C'est possible a condition d'utiliser un TTimer qui va te permettre de calculer le tps écoulé sur Thread1.
    Sitot le tps limite atteint, tu peux forcer la fin du thread1 et donc lancer thread2 par :


  6. #6
    Membre averti
    Inscrit en
    Novembre 2004
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 11
    Par défaut
    Ok je pense que je vais faire comme ça.
    merci...

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

Discussions similaires

  1. TThread et waitfor - descripteur non valide
    Par code34 dans le forum Langage
    Réponses: 2
    Dernier message: 27/10/2003, 23h44
  2. TThread: probleme de recuperation du Handle
    Par code34 dans le forum Langage
    Réponses: 8
    Dernier message: 07/09/2003, 03h04
  3. [Turbo Pascal] [LG]Instruction "WaitFor" en pascal ?
    Par bonbon dans le forum Langage
    Réponses: 13
    Dernier message: 26/03/2003, 18h37
  4. Thread probs avec WaitFor()
    Par pixelrock dans le forum C++Builder
    Réponses: 2
    Dernier message: 04/11/2002, 09h40
  5. [TTHREAD] ne termine pas sont exécution
    Par Bbenj dans le forum Langage
    Réponses: 4
    Dernier message: 02/08/2002, 16h42

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