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

Composants VCL Delphi Discussion :

Progresse bar


Sujet :

Composants VCL Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de etranger
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    333
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2004
    Messages : 333
    Par défaut Progresse bar
    Bonjour tout le monde

    Je ne savais pas si je doit poser ma question ici ou dans la rubrique Algorithme, mais bon mon application est en Delphi ....

    Je voulais savoir qu'elle est , d'apres votre experience la mellieure facon d'implementer une Progresse bar SANS que cela ralentice la procedure en cour.

    j'ai penser a 3 facons :
    1)Calculer par exemple le pourcentage des octets qui ont ete traiter jusqu'a maintement par rapport au fichier complet, mais cela ralentirai la procedure.

    2)Effectuer ce calcule mais tout les 1024 byte par exemple, mais cela necessiterait commeme un test de plus pour chaque boucle.

    3)Utiliser un autre Thread, ce thread axederait a une variable qui serait incrementer a chaque boucle, mais j'ai peur que cela engandre des conflit entre les 2 threads.

    Je vous demande donc la mellieure proposition d'apre vous,merci d'avance

  2. #2
    Membre Expert

    Homme Profil pro
    Consultant informatique
    Inscrit en
    Janvier 2004
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 301
    Par défaut Re: Progresse bar
    hello,

    Citation Envoyé par etranger
    3)Utiliser un autre Thread, ce thread axederait a une variable qui serait incrementer a chaque boucle, mais j'ai peur que cela engandre des conflit entre les 2 threads.
    franchement, pour moi c'est la meilleure solution: un thread qui lit l'avancement et un qui fait le travail. Comme ça, tu peux règler ta fréquence de rafraichissement de la progressbar de manière indépendante du traitement (la tâche s'exécute, que tu rafraichisse ou pas).

    et je ne comprend pas vraiment de quels conflits tu parles ?!

  3. #3
    Membre éclairé Avatar de etranger
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    333
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2004
    Messages : 333
    Par défaut
    Merci pour ta reponce

    En fait je parle du conflit des deux thread au cas ou le 2 eme thread (celui qui s'occupe du progresse bar) lirait une variable (il faut bien le faire pour savoir ou l'on est) en meme temps que l'autre thread serait en train d'incremanter .

    mais je vais faire des tests (utilisation de syncronise) pour regler ca .

    a+

  4. #4
    Membre Expert

    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    685
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 685
    Par défaut
    En fait je parle du conflit des deux thread au cas ou le 2 eme thread (celui qui s'occupe du progresse bar) lirait une variable (il faut bien le faire pour savoir ou l'on est) en meme temps que l'autre thread serait en train d'incremanter .
    Pour la mise à jour d'un graphique VCL depuis un thread, il faut utiliser TThread.Synchronize().

    Pour synchroniser un bout de code et empêcher son exécution par deux threads à la fois, il faut regarder du côté des TCriticalSection ou TMultiReadExclusiveWriteSynchronizer (F1 dans l'aide pour plus de détails :-))

  5. #5
    Membre éclairé Avatar de etranger
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    333
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2004
    Messages : 333
    Par défaut
    Voila ce que j'ai pensser faire :
    1-ProgressBar1.max := stream.size;
    2-je creer un thread avec une routine qui agit sur le stream.
    3-while not thread.terminated do avancer_le_progresse .
    4-La routine utilise lle compteur de la boucle du thread pour savoir ou somme nous , positione le progressebar et refraichi la forme.

    Le thread n'affecte donc pas la VCL.

    Croyer vous que cela pourait poser un probleme ?
    (jusqu'a maintenent ca fonctione, mais on sait jamais)

    a+

Discussions similaires

  1. progress bar en c++
    Par boulette&co dans le forum MFC
    Réponses: 1
    Dernier message: 23/05/2005, 09h26
  2. [ATL] Petite question sur les progress bar
    Par MrMaze dans le forum MFC
    Réponses: 1
    Dernier message: 06/05/2005, 10h40
  3. [MFC]Changer la couleur d'un progress bar
    Par Deedier dans le forum MFC
    Réponses: 1
    Dernier message: 21/04/2005, 19h39
  4. [VB.NET] Mise en place d'une progress bar
    Par Hoegaarden dans le forum Windows Forms
    Réponses: 14
    Dernier message: 19/10/2004, 10h23
  5. Progress bar au boot
    Par saibe dans le forum Administration système
    Réponses: 2
    Dernier message: 18/08/2003, 11h01

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