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

 Delphi Discussion :

IdHTTP.get et fenêtre qui freeze


Sujet :

Delphi

  1. #1
    Débutant
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    886
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 886
    Points : 330
    Points
    330
    Par défaut IdHTTP.get et fenêtre qui freeze
    salut

    je viens à vous pour un problème de fenêtre qui freeze / gèle / lag

    j'utilise un composant indy pour récupérer le code source d'une page web

    IdHTTP.get

    ce code est implanté dans le onshow de ma fenêtre n° 2 :

    - la fenêtre prend un peu de temps pour s'ouvrir
    - une fois ouverte elle freeze un peu, car on ne peut pas la déplacer tout de suite (avec la barre du haut)

    le code source de la page à récupérer n'est pas énorme, mais il y a quand même un petit lag

    sachant que mon .get s'execute dans un onshow et dans un timer toutes les 5 min, que me conseillez vous de faire ?

    j'ai lu rapidement, qu'on pouvait mettre un IdAntiFreeze1 sur la fiche, ou Application.ProcessMessages(); mais je ne vois aucune différence

    j'ai pensé à un thread, je connais un peu ce que c'est, mais jamais utilisé

    est ce la solution ? si oui on peut l'utiliser facilement dans le onshow d'une fiche puis dans un timer ?

    il me semble qu'il y a plusieurs type d'utilisation / d'implémentation d'un thread, dans ce cas, juste pour une ligne de code (IdHTTP.get) que me conseillez vous ?

    merci

  2. #2
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 445
    Points
    28 445
    Par défaut
    à ma connaissance idAntiFreeze règle le problème...es-tu certain que c'est le GET qui est lent et non le traitement du fichier lu ?

    pour créer un Thread c'est tout bête, tu dérives TThread en surchargeant la méthode Execute en prenant soins de mettre FreeOnTerminate à True si tu ne veux pas gérer la destruction du thread.

    si tu veux que ton thread interagisse avec la fiche il faut le faire dans une méthode invoquée via Synchronize()

    c'est tout.
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  3. #3
    Membre régulier
    Homme Profil pro
    Inscrit en
    Août 2006
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2006
    Messages : 108
    Points : 82
    Points
    82
    Par défaut
    C'est peut-être du bricolage mais j'ai déjà résolu ce genre de problèmes en mettant le GET dans un pseuo-thread (CreateThread), comme expliqué ici : http://www.delphipages.com/forum/sho...d.php?t=134013

    Beny

  4. #4
    Débutant
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    886
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 886
    Points : 330
    Points
    330
    Par défaut
    merci à vous deux

    paul le code source de la page est très simple, c'est même un seul mot (pour mes tests) donc je ne pense pas que sont traitement soit long

    mais en réfléchissant, étant donné que dans le futur je compte récupérer un fichier source plus important afin de renseigner des champs de mon application; le mieux est de passer par un thread avec synchronize

    beny, j'ai trouvé une source simple de thread, j'essaierai cette méthode avant toute bidouille

  5. #5
    Membre régulier
    Homme Profil pro
    Inscrit en
    Août 2006
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2006
    Messages : 108
    Points : 82
    Points
    82
    Par défaut
    A savoir aussi que le composant Indy est bloquant.
    Dans tes projets futurs, tu pourra essayer Synapse ou IpWorks.

    Beny

Discussions similaires

  1. Fenêtre SDL qui freeze
    Par Dinduks dans le forum SDL
    Réponses: 4
    Dernier message: 23/12/2010, 21h27
  2. [wxPython][ProgressDialog] Appel de l'appli qui freeze
    Par Guigui_ dans le forum wxPython
    Réponses: 1
    Dernier message: 08/12/2005, 18h25
  3. Fenêtre qui s'ouvre au démarrage
    Par Ender dans le forum Autres Logiciels
    Réponses: 5
    Dernier message: 20/09/2005, 09h38
  4. Réponses: 9
    Dernier message: 16/08/2005, 10h53
  5. [MFC] Ces fenêtres qui ne s'affichent pas..
    Par Davide dans le forum MFC
    Réponses: 3
    Dernier message: 19/11/2003, 11h30

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