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 :

comment stoper 1 thread d'arrière-plan


Sujet :

Langage Delphi

  1. #1
    Nouveau membre du Club
    Inscrit en
    Novembre 2002
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 24
    Points : 29
    Points
    29
    Par défaut comment stoper 1 thread d'arrière-plan
    En faite, j'ai crée un thread d'arrier-plan qui ouvre une 'form' contenant des tables tres importantes et qui mettent beaucoup de temps à s'ouvrir...
    Lorsque je kill le thread en cours d'execution, j'ai une erreur fatale !!
    est-ce que c'ets possible de l'arreter ???


    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
    procedure init_objets.Execute;
    var fini : boolean;
    begin
      fini := false;
      while (not Terminated) and (fini = false) do
      try
        Application.CreateForm(TDatasog3, Datasog3);
        Application.CreateForm(TDatasog, Datasog);
        datasog.Tvente.Active := true;
        datasog.TEcriture.Active := true;
        datasog.TVentligne.Active := true;
        fini := true;
        terminate;
        showmessage('Processus terminé');
      except
        terminate;
      end;
    end;

    Merci

  2. #2
    Membre habitué Avatar de gord's
    Inscrit en
    Avril 2003
    Messages
    115
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 115
    Points : 127
    Points
    127
    Par défaut
    ta variable 'fini' esr redondante avec le terminated, et en plus comme tu ne la change pas dans le except, tu ne peux sortir de ta boucle que si le traitement se déroule sans exception

    la boucle while not terminated n'est utile que pour un thread qui doit 'servir' plusieurs fois. Et de toute évidence, elle ne sert à rien pour toi puisque tu appelles systematiquement terminate.

    Que veux tu dire par 'killer le thread' ?
    La prochaine révolution informatique : les machines qui font ce qu'on veut, au lieu de faire ce qu'on leur demande...
    Grand Vizir du Grand Gourou - Trois-quart aile gauche du TRFC et intendant de 3ème mi-temps - Papy fait de la résistance

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 6
    Points : 7
    Points
    7
    Par défaut
    Essais ça.

    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
     
     
    procedure init_objets.Execute;
    begin
       try
          Datasog3 := TDatasog3.Create(Nil);
          Datasog  := TDatasog .Create(Nil);
          datasog.Tvente.Active     := true;
          datasog.TEcriture.Active  := true;
          datasog.TVentligne.Active := true;
          showmessage('Processus terminé');
       Finally
          Datasog.Free;
          Datasog3.Free;
          terminate;
       end;
    end;
    Cordialement.
    Et que si c'est pas sûr. C'est quand même peut-être.
    Pensez à mettre le tag [RESOLU] si tel est le cas.

  4. #4
    Nouveau membre du Club
    Inscrit en
    Novembre 2002
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 24
    Points : 29
    Points
    29
    Par défaut
    MERCI pour tout.

    Le programme fonctionne a merveille

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

Discussions similaires

  1. Comment mettre un programme en arrière plan?
    Par boucané dans le forum Windows XP
    Réponses: 2
    Dernier message: 06/09/2007, 19h07
  2. comment lancer une fenètre en arrièr plan
    Par moon93 dans le forum wxPython
    Réponses: 2
    Dernier message: 16/07/2007, 09h25
  3. Réponses: 4
    Dernier message: 21/05/2007, 07h34
  4. Réponses: 19
    Dernier message: 27/04/2007, 15h25

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