Utilisation de paramètres dans les gestionnaires BackgroundWorker

Pour la transmission des données à un BackgroundWorker's DoWork je utiliser une classe wrapper' exemple:

MyParams mpar = new MyParams();
...
mpar.Par1 = par1val;
mpar.Par2 = par2val;
mpar.Par3 = par3val;
...
var worker1 = new System.ComponentModel.BackgroundWorker();
worker1.DoWork += new DoWorkEventHandler(worker1_DoWork);
worker1.RunWorkerCompleted += new RunWorkerCompletedEventHandler(worker1_RunWorkerCompleted);
worker1.RunWorkerAsync(mpar);

Alors je peux utiliser les paramètres de mpar instance dans worker1_DoWorkd'exploitation dans un autre thread.

void worker1_DoWork(object sender, DoWorkEventArgs e)
 {
      //here we use mpar.Par1, mpar.Par2 and so on
 }

Dans RunWorkerCompletedEventHandler nous faire un peu de postactions dans le thread de l'INTERFACE utilisateur.

Ma question est : Peut-on utiliser dans RunWorkerCompleted gestionnaire de la mpar exemple, qui a travaillé juste avant, dans DoWork gestionnaire et pouvons-nous être sûr que ses valeurs sont les mêmes qu'il avait dans DoWork? Si non, quelle est la bonne approche pour le partage de paramètres pour les différentes étapes de BackgroundWorker opération?

void worker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
    {
        Dispatcher.BeginInvoke((Action)(() =>
        {
            //Can we use the mpar instance here?
        }
        ));
    }

source d'informationauteur rem | 2011-06-16