title: System.ComponentModel.BackgroundWorker never invokes ProgressChanged
body: <p>I recently rewrote my Windows Forms application to use BackgroundWorker instances instead of using manually  created "worker threads". After checkin I noticed some tests started to fail. After some debugging I can demonstate my problems by showing you the following 2 tests:</p>
  
  <pre><code>    [Test]        
      public void Test_A()
      { 
          bool progressChanged = false;
          var worker = new BackgroundWorker();
          worker.WorkerReportsProgress = true;
          worker.DoWork += (s, e) =&gt; worker.ReportProgress(0, null);
          worker.ProgressChanged += (s, e) =&gt; progressChanged = true;
          worker.RunWorkerAsync();
          Thread.Sleep(100);
          progressChanged.ShouldBeTrue();            
      }
  
      [Test]        
      public void Test_B()
      { 
          //Creation of o form component causes (?) this test to fail, even do I dispose it
          var view = new Form();
          view.Dispose();
  
          bool progressChanged = false;
          var worker = new BackgroundWorker();
          worker.WorkerReportsProgress = true;
          worker.DoWork += (s, e) =&gt; worker.ReportProgress(0, null);
          worker.ProgressChanged += (s, e) =&gt; progressChanged = true;
          worker.RunWorkerAsync();
          Thread.Sleep(100);
          progressChanged.ShouldBeTrue();            
      }
  </code></pre>
  
  <p>Test_A success while Test_B fails. This is regardless if I sleep 100 ms or 100 minutes. Why?? My production code seem to work though, but it is annoying not being able to have a regression test suite that works (I have other test creating Forms components and these tests must be executed BEFORE my test using BackgroundWorker) 
  The next step would be to examine the source code of BackgroundWorker, but before I do that I thought I`d check for help here.</p>
  
  <p>Regards Michael</p>