title: How do you set the UserState in the RunWorkerCompletedEventArgs object?
body: <p>HI all.
  I have an array of BackgroundWorker objects running instances of a Worker class.  When I call the Worker class the object instance does it's thing and then runs out of code (the loop finishes).  I'm able to listen to the RunWorkerCompleted() event but when it calls the delegate that I've set up I need to know which of my Worker objects just completed. </p>
  
  <p>I see a UserState property in the RunWorkerCompletedEventArgs that comes to my delegate but I have no idea how to set this in my Worker object as it's finishing.</p>
  
  <p>Any ideas? </p>
  
  <p>snippet from my WorkManager.cs class</p>
  
  <pre><code>public Worker AddWorker()
  {
      Worker w = new Worker();
  
      _workers.Add(w.WorkerID,w);
  
      BackgroundWorker bg = new BackgroundWorker();
      _bgworkers.Add(bg);
  
      bg.DoWork += w.Start;
      bg.WorkerReportsProgress = true;
      bg.WorkerSupportsCancellation = true;
      bg.ProgressChanged += ProcessWorkerMessage;
      bg.RunWorkerCompleted += WorkerFinished;
  
  
      w.WorkManager = this;
      w.BackgroundWorker = bg;
  
      bg.RunWorkerAsync(w);
  
  
      return w;
  
  }
  
  
  public void WorkerFinished(object sender, RunWorkerCompletedEventArgs e)
  {
      if (_onManagerEvent != null)
          _onManagerEvent(new ManagerEvent { EventDate = DateTime.Now, Message = "Worker ??? successfully ended." });
  }
  </code></pre>
  
  <p>So when my Worker object finishes the loop in its Start() method, what do I do to fill the userState property of the RunWorkerCompleteEventArgs object "e" that is passed to my WorkerFinished method()?</p>
  
  <p>Thanks</p>