For passing data to a BackgroundWorker's DoWork I use a separate wrapper class' instance:
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);
Then I can use parameters of mpar instance in worker1_DoWork, operating in another thread.
void worker1_DoWork(object sender, DoWorkEventArgs e)
 {
      //here we use mpar.Par1, mpar.Par2 and so on
 }
In RunWorkerCompletedEventHandler we do some postactions in UI thread.
My question is : Can we use in RunWorkerCompleted handler the mpar instance, which worked just before in DoWork handler and can we be sure its values are the same it had in DoWork? If not, what is the correct approach for sharing parameters for various stages of BackgroundWorker operation?
void worker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
    {
        Dispatcher.BeginInvoke((Action)(() =>
        {
            //Can we use the mpar instance here?
        }
        ));
    }
You can assign the value of e.Result in worker1_DoWork
static void worker1_DoWork(object sender, DoWorkEventArgs e)
{
    //Do the work
    //...
    e.Result = new MyParams();
}
Then you can get it in the worker1_RunWorkerCompleted in e.Result.
If you need to pass additional result value and you don't want to put MyParams object in the worker1_DoWork: e.Result - then you can create a small class ResultHolder with MyParams and MyResult as properties and use that class to pass the result in worker1_DoWork
 
         
                                         
                                         
                                         
                                        ![Interactive visualization of a graph in python [closed]](https://www.devze.com/res/2023/04-10/09/92d32fe8c0d22fb96bd6f6e8b7d1f457.gif) 
                                         
                                         
                                         
                                         加载中,请稍侯......
 加载中,请稍侯......
      
精彩评论