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# Discussion :

[C#][Raffraichissement ecran]problème d'affichage temps réel


Sujet :

C#

  1. #1
    Membre habitué
    Inscrit en
    Février 2004
    Messages
    363
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 363
    Points : 161
    Points
    161
    Par défaut [C#][Raffraichissement ecran]problème d'affichage temps réel
    salut,

    voilà mon problème :

    J'ai 3 éléments :

    - un timer
    - un label (qui à la valeur "...chargement...")
    - une progressbar

    quand mon timer se déclenche, je lance une fonction qui :

    - affiche mon label et ma progressbar (initialisée à 0)
    - effectue mes traitements (pour afficher des milliers d'enregistrements dans une grille) et fais avancer la progressbar
    - arrete le timer

    Le problème est que mon label et la progressbar ne s'affichent que à la fin de la fonction, j'ai l'impression que le rafraichissement ecran est bloqué pendant l'evenement timer et je ne sais pas comment faire.

  2. #2
    Membre éprouvé Avatar de graphicsxp
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    758
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Luxembourg

    Informations forums :
    Inscription : Avril 2004
    Messages : 758
    Points : 1 022
    Points
    1 022
    Par défaut
    Salut,
    Normal et question classique
    Les opérations que tu fais sont tellement longues que l'affichage n'est pas raffraichit, i.e tu executes tout sur le meme thread (le thread original). Il faut que tu sépares la couche 'travail' et la couche 'affichage'.
    Pour ca, jette un oeil à ces tres bons articles:

    http://dotnet.mvps.org/dotnet/faqs/?id=multithreading&lang=en

    bon courage.
    @+

  3. #3
    Expert éminent
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 63
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Points : 7 879
    Points
    7 879
    Par défaut
    C'est normal, il te faut passer par du multithreading pour que le tout se fasse simultanément voir Faq et autres post sur ce thème

    Edit: Arf grillé par graphicsxp
    Pour le bien de ceux qui vous lisent, ayez à coeur le respect du forum et de ses règles

  4. #4
    Membre habitué
    Inscrit en
    Février 2004
    Messages
    363
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 363
    Points : 161
    Points
    161
    Par défaut
    merci, j'avais pas pensé au multithreading

    P.S. : je trouve dommage malgré tout d'etre obligé de passer par le multithreading.

  5. #5
    Expert éminent
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 63
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Points : 7 879
    Points
    7 879
    Par défaut
    Citation Envoyé par bakonu
    merci, j'avais pas pensé au multithreading

    P.S. : je trouve dommage malgré tout d'etre obligé de passer par le multithreading.
    Ahbon tu connais d'autres moyens d'effectuer plusieurs actions simultanément
    Pour le bien de ceux qui vous lisent, ayez à coeur le respect du forum et de ses règles

  6. #6
    Membre éprouvé Avatar de graphicsxp
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    758
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Luxembourg

    Informations forums :
    Inscription : Avril 2004
    Messages : 758
    Points : 1 022
    Points
    1 022
    Par défaut
    P.S. : je trouve dommage malgré tout d'etre obligé de passer par le multithreading.
    Quel est le probleme :

  7. #7
    Membre habitué
    Inscrit en
    Février 2004
    Messages
    363
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 363
    Points : 161
    Points
    161
    Par défaut
    Je pensais que l'affichage était threadé automatiquement!

    Ce que je trouve dommage c'est de devoir threadé le traitement.

  8. #8
    Expert éminent
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 63
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Points : 7 879
    Points
    7 879
    Par défaut
    Citation Envoyé par bakonu
    Je pensais que l'affichage était threadé automatiquement!

    Ce que je trouve dommage c'est de devoir threadé le traitement.
    :
    Pour le bien de ceux qui vous lisent, ayez à coeur le respect du forum et de ses règles

  9. #9
    Membre habitué
    Inscrit en
    Février 2004
    Messages
    363
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 363
    Points : 161
    Points
    161
    Par défaut
    en fait, je voulais laisser tout le traitement dans le thread principal!

  10. #10
    Membre éprouvé Avatar de graphicsxp
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    758
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Luxembourg

    Informations forums :
    Inscription : Avril 2004
    Messages : 758
    Points : 1 022
    Points
    1 022
    Par défaut
    Ben tu peux, mais si tu veux un affichage correct il faut passer par le multithreading...
    Pas d'autre moyen, désolé

  11. #11
    Membre habitué
    Inscrit en
    Février 2004
    Messages
    363
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 363
    Points : 161
    Points
    161
    Par défaut
    En C, c'est possible ...

  12. #12
    Membre éprouvé Avatar de graphicsxp
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    758
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Luxembourg

    Informations forums :
    Inscription : Avril 2004
    Messages : 758
    Points : 1 022
    Points
    1 022
    Par défaut
    Citation Envoyé par bakonu
    En C, c'est possible ...
    Quel rapport avec C#:

  13. #13
    Membre habitué
    Inscrit en
    Février 2004
    Messages
    363
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 363
    Points : 161
    Points
    161
    Par défaut
    juste pour dire que C# c'est bien mais C c'est mieux

  14. #14
    Membre actif
    Homme Profil pro
    Création de jeux video (en amateur)
    Inscrit en
    Mars 2003
    Messages
    408
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Cantal (Auvergne)

    Informations professionnelles :
    Activité : Création de jeux video (en amateur)
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2003
    Messages : 408
    Points : 260
    Points
    260
    Par défaut
    pourquoi ne pas faire le traitement dans le thread de l'application et faire un Application.DoEvent() ou un progressbar1.Refresh() de temps en temps pour rafraichir l'affichage ?

    ainsi, on ne se complique pas la vie avec le multithreading, et on obtient le même résultat (dans ce cas précis)
    ZTAB (Ze Text Adventure Builder)

    Logiciel très intuitif et ergonomique de création de jeux d'aventure et de livres dont vous êtes le héros.

    http://sites.google.com/site/ztabsoft/

  15. #15
    Membre habitué
    Inscrit en
    Février 2004
    Messages
    363
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 363
    Points : 161
    Points
    161
    Par défaut
    hum, j evais essayer, je te tiens au courant

  16. #16
    AP
    AP est déconnecté
    Membre confirmé
    Avatar de AP
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    480
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2002
    Messages : 480
    Points : 538
    Points
    538
    Par défaut
    tu peux tenter un petit application.doevents() apres chaque changemet de valeur du label/progressbar. Cependant comme cela a été dit le multithreading est mieux.

  17. #17
    Membre actif
    Homme Profil pro
    Création de jeux video (en amateur)
    Inscrit en
    Mars 2003
    Messages
    408
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Cantal (Auvergne)

    Informations professionnelles :
    Activité : Création de jeux video (en amateur)
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2003
    Messages : 408
    Points : 260
    Points
    260
    Par défaut
    Citation Envoyé par AP
    Cependant comme cela a été dit le multithreading est mieux.
    Pas d'accord, si l'on se base sur le critère "résultats désirés/(temps de développement*risques de bug)".
    ZTAB (Ze Text Adventure Builder)

    Logiciel très intuitif et ergonomique de création de jeux d'aventure et de livres dont vous êtes le héros.

    http://sites.google.com/site/ztabsoft/

  18. #18
    Expert éminent
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 63
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Points : 7 879
    Points
    7 879
    Par défaut
    Citation Envoyé par Harry_polin
    Citation Envoyé par AP
    Cependant comme cela a été dit le multithreading est mieux.
    Pas d'accord, si l'on se base sur le critère "résultats désirés/(temps de développement*risques de bug)".
    Il faut effectivement dire que le WindowsForm Not Thread Safe pose quelques soucis
    Pour le bien de ceux qui vous lisent, ayez à coeur le respect du forum et de ses règles

  19. #19
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    487
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2002
    Messages : 487
    Points : 621
    Points
    621
    Par défaut
    Je pense que l'utilisation d'un thread parait plus compliquée au départ mais est plus efficace. Le découpage entre traitement et réaction à l'interface (clic ou autre) est géré tout seul et insensible pour l'utilisateur. Sinon, il faut truffer son code de traitement avec des tests d'interface, ce que je trouve très peu lisible et de toute façon moins efficace.
    Au passage, il faut manier Application.DoEvent avec précaution à cause de la possibilité de réentrance (et donc de plantage par débordement de la pile).
    On ne peut pas faire boire un âne qui n'a pas soif.

  20. #20
    Expert éminent
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 63
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Points : 7 879
    Points
    7 879
    Par défaut
    Citation Envoyé par NicolasG
    ... Sinon, il faut truffer son code de traitement avec des tests d'interface, ce que je trouve très peu lisible et de toute façon moins efficace....
    Pour cela tu as aussi à ta disposition la classe UserControl, qui peut générer nativement ses validations et évènements appropiés. Ce qui rend le code nettement plus lisible
    En fait, je pense que chaque appli necessite de corectement mesurer à la fois les critères qu'a suggéré Hary_polin et les tiens. La prise de decisions éclairée sera d'autant meilleure.
    Pour le bien de ceux qui vous lisent, ayez à coeur le respect du forum et de ses règles

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

Discussions similaires

  1. [AJAX] Comment faire => resultat de mysql en affichage temps réel
    Par noellepere dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 24/09/2007, 09h55
  2. Affichage temps-réel d'une séquence d'image
    Par Copros dans le forum GTK+ avec C & C++
    Réponses: 2
    Dernier message: 30/05/2007, 15h13
  3. [AJAX] Affichage temps réel.
    Par AMS78 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 12/01/2007, 20h38
  4. [Ecran] Problème d'affichage sur un écran
    Par sylsau dans le forum Périphériques
    Réponses: 5
    Dernier message: 09/08/2006, 09h58
  5. Architecture: ré-affichage temps réel
    Par SGJ dans le forum Général Conception Web
    Réponses: 12
    Dernier message: 20/06/2006, 13h51

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