none
Traitement des report progress dans un BackgoundWorker RRS feed

  • Question

  • Bonjour,

    J'ai une question par rapport au fonctionnement de l'évènement ProgressChanged du composant Back ground worker. Voici un exemple simplifié du cas d'exécution que j'ai pu rencontrer:


      private void bgw_DoWork(object sender, DoWorkEventArgs e)
     {
    .......

    bgw.ReportProgress(0);

    .......       

    bgw.ReportProgress(1);

    .......

    }


    bgw_ProgressChanged(object sender, ProgressChangedEventArgs e)

    {

    // log dans un fichier qu'on a commencé à traiter le progress e.ProgressPercentage

    Log("Start "+e.ProgressPercentage);

    ....

    ....

    // log dans un fichier qu'on a fini à traiter le progress e.ProgressPercentage

    Log("End "+e.ProgressPercentage);

    }


    Dans le fichier de logs, je m'attends à trouver dans tous les cas:

    => Start 0 End 0 Start 1 End 1

    ou bien

    => Start 1 End 1 Start 0 End 0


    Mais dans certains cas (assez rares)  je trouve par exemple

    Start 0 Start 1 End 1 End 0

    Comme si le traitement d'un progress peut être interrompu momentanément pour en traiter un autre.

    Est ce que c'est normal? Où est ce qu'il y a une autre explication possible?

    mardi 5 mars 2013 08:53

Réponses

  • Moi même je ne suis pas en mesure de reproduire le problème, sinon j'aurai présenté un code complet au lieu d'un pseudo-code.

    Je vais partir du principe que la gestion ne s'exécute pas sur le même thread (bien que ça soit complètement en désaccord avec l'utilité présentée du composant BackgroundWorker)

    Merci de votre aide.

    Cordialement

    • Marqué comme réponse Aurel Bera vendredi 8 mars 2013 09:10
    jeudi 7 mars 2013 10:44

Toutes les réponses