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 :

Arrêter un prog si temps de connexion trop long


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 Arrêter un prog si temps de connexion trop long
    je reprends un précédent message :
    au lancement d'une application, celle-ci tente de se connecter à un environnement à l'aide d'un composant métier ...

    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 TForm.FormCreate(Sender: TObject)
    begin
    ...
     Module := TDtm.Create(Self); // appel de DataModuleCreate
    ...
    end;   
     
    procedure TDtm.DataModuleCreate(Sender: TObject)
    begin
       Try
         env.Open; // ligne 4 - ici se fait la connexion 
       Except
         On E: EConnexion do
         Showmessage(E.Message);
       end;
       // ici la suite de l'exécution
    end;
    pour une raison "x ou y" ("bouchon" sur le réseau par exemple) lorsque Delphi exécute la ligne 4, ça peut durer un "long" moment avant de passer à la suite ...
    Mon but est de pouvoir décompter la durée lorsqu'il va passer à la ligne 4 et d'arrêter par exemple le prog. si ça dépasse 20 sec.

    Pb : l'exécution qui risque de durer lontemps est sur une SEULE ligne de code et je n'ai pas les sources du composant.
    je vois pas comment je peux faire ... même dans un thread !
    Une idée SVP ?

  2. #2
    Membre expérimenté

    Inscrit en
    mai 2002
    Messages
    720
    Détails du profil
    Informations forums :
    Inscription : mai 2002
    Messages : 720
    Points : 1 566
    Points
    1 566
    Par défaut
    Deux thread que tu créé simultanément :
    Le premier essaye de se connecter, le second chronomètre.

    Si au bout de 20s, le premier thread n'a pas signalé que la connexion s'est réalisé, le second l'arrête.

    Bon développement !

    Smortex

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

  3. #3
    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
    Effectivement !!!
    je vais essayer
    Merci

  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
    Excuse
    le 1er thread sera le principal (Application.Handle)
    le second, créé, celui qui contient le timer
    Mais est-ce que les 2 threads peuvent s'exécuter simultanement ?!

  5. #5
    Membre expérimenté

    Inscrit en
    mai 2002
    Messages
    720
    Détails du profil
    Informations forums :
    Inscription : mai 2002
    Messages : 720
    Points : 1 566
    Points
    1 566
    Par défaut
    C'est le but du multithreading !
    Exécuter plusieurs actions en même temps.

    Imaginons une application qui calcule des tas de trucs très complexes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
      for i := 0 to 10000000000 do
        for j := 0 to 10000000000 do
          Nbr := Nbr * (cos(i^3-7j) mod 45 +5)
    (Exemple pris au hasard et non vérifié ! )

    Si on fait le calcul pendant que l'utilisateur veut écrire dans un mémo, rien ne s'affichera dans ce dernier.

    Si on utilise en thread, l'application continue à fonctionner normalement pour l'utilisateur.

    Cela implique pas mal de vigilence quand il y à plusierus thread qui partagent les mêmes ressources (Risque de crash en cas d'erreur), mais dans un cas comme celui-ci, la solution des Thread semble adaptée.

    Smortex

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

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

Discussions similaires

  1. Temps de requête trop long
    Par cedrich dans le forum Oracle
    Réponses: 11
    Dernier message: 07/12/2006, 17h53
  2. Temps de chargement trop long pour animation légère
    Par CharlyMops dans le forum Flash
    Réponses: 1
    Dernier message: 27/09/2006, 08h13
  3. Réponses: 5
    Dernier message: 15/09/2006, 17h58
  4. [MySQL] Problème temps d'éxécution trop long
    Par Yo. dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 13/06/2006, 15h55
  5. temp de réponse trop long
    Par maxidoove dans le forum Langage SQL
    Réponses: 6
    Dernier message: 27/10/2005, 19h24

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