title: Background worker - report progress with string array
body: <p>I need to return multiple STRING values from my backgroundworker in each loop, so I tried to use ReportProgress second parameter as string array. Example of code:</p>
  
  <pre><code>private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
  {
      string[] workerResult = new string[2];
      for (int i=0; i&lt;someNumber; i++)
      {
          //do some heavy calculating
          workerResult[0] = "this string";
          workerResult[1] = "some other string";
          backgroundWorker1.ReportProgress(i, workerResult) // also tried workerResult[] and [2]
      }
  }
  
  private void backgroundWorker1_ProgressChanged(object sender, ProgressChangedEventArgs e)
  {
      string[] results = (string[])e.UserState;
  
      MessageBox.Show(results[0]); // line of error
      MessageBox.Show(results[1]); // line of error
  }
  </code></pre>
  
  <p>It compiles, but on runtime in the moment I try to access Userstate returned string, I get an error: "Object reference not set to an instance of an object."</p>
  
  <p>For me it seems lik something is wrong when passing array parameter to ProgressChanged delegate, or in ProgressChanged method when trying to set results array values.</p>