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

Windows Forms Discussion :

[C#] Mettre à jour l'affichage dans une fonction callback


Sujet :

Windows Forms

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 98
    Points : 48
    Points
    48
    Par défaut [C#] Mettre à jour l'affichage dans une fonction callback
    Bonjour à tous...

    Je fais une copie de fichier à l'aide de CopyFileEx. La copie s'effectue correctement, mais j'utilise une progressbar pour visualiser l'avancement et je n'arrive pas à l'actualiser, pas plus que la valeur en pourcentage... Le tout ne s'affiche que lorsque la copie est terminée.

    le code de la callback est tout simple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    if (reason == CopyProgressCallbackReason.CALLBACK_CHUNK_FINISHED)
                {
                    cptdebug += 1; // pour vérifier l'appel de la fct callback...
                    pBFile.Value = (int)(transferred / total) * 100;
                    lpercent.Text = pBFile.Value.ToString() + "%";
                }
                return CopyProgressResult.PROGRESS_CONTINUE;
    le compteur cptdebug m'a servi à verifier le nombre d'appels de la fonction...

    Quelle serait la bonne technique à utiliser?

    Merci d'avance,

    Robert

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 753
    Points
    39 753
    Par défaut
    Citation Envoyé par pdgnr Voir le message
    je n'arrive pas à l'actualiser, pas plus que la valeur en pourcentage... Le tout ne s'affiche que lorsque la copie est terminée.
    Je suppose que tu travailles sur le thread UI ? Il faut faire la copie dans un thread à part, sinon l'UI ne peut plus se mettre à jour.

    Si tu veux te simplifier la vie, la librairie Dvp.NET contient une classe FileCopyOperation qui encapsule l'API CopyFileEx :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    var copy = new FileCopyOperation(source, destination);
    copy.ProgressChanged += copy_ProgressChanged;
    copy.Execute();
     
    ...
     
    void copy_ProgressChanged(object sender, FileOperationProgressEventArgs e)
    {
        Console.WriteLine(
            "Copié {0} octets sur {1} ({2}%)",
            e.TransferredBytes,
            e.TotalBytes,
            e.PercentDone);
    }

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 98
    Points : 48
    Points
    48
    Par défaut
    Problème réglé grâce à DVP (et surtout à ses auteurs)!

    Merci de m'avoir fait connaître cette librairie et merci à tous les contributeurs... Je fréquente le site depuis des années, mais j'ignorais son existence... je ne dois pas lire les news assez attentivement sans doute!

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

Discussions similaires

  1. [PPT-2010] mettre à jour les nombres dans une phrase
    Par pepsister dans le forum Powerpoint
    Réponses: 1
    Dernier message: 14/06/2010, 10h32
  2. mise à jour d'array dans une fonction
    Par Kassar dans le forum Langage
    Réponses: 3
    Dernier message: 09/11/2008, 16h32
  3. Réponses: 6
    Dernier message: 24/11/2007, 18h48
  4. [C# 2.0] Mettre à jour l'affichage d'une dataGridView
    Par nicolas.pied dans le forum Accès aux données
    Réponses: 4
    Dernier message: 31/01/2007, 14h36
  5. [débutant] mettre un parametre optionnel dans une fonction
    Par maximenet dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 03/08/2006, 16h08

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