title: BackgroundWorker dies unexpectedly
body: <p>I have the following code:</p>
  
  <pre><code>public Mainform()
  {
  ...
          // scheduler
          scheduler.DoWork += new System.ComponentModel.DoWorkEventHandler(scheduler_DoWork);
          scheduler.RunWorkerCompleted += new System.ComponentModel.RunWorkerCompletedEventHandler(scheduler_RunWorkerCompleted);
          scheduler.WorkerReportsProgress = false;
          scheduler.WorkerSupportsCancellation = true;
  ...
  
  ...
  
      scheduler_DoWork(this, null);
      scheduler.RunWorkerAsync(1000);
  
  ...
  }    
  
  void scheduler_RunWorkerCompleted(object sender, System.ComponentModel.RunWorkerCompletedEventArgs e)
      {
          if (e.Error != null)
          {
              scheduler_Enabled = false;
              CustomExceptionHandler eh = new CustomExceptionHandler();
              eh.HandleUnhandledException(e.Error, "scheduler");
          }
          if(scheduler_Enabled)  
          {
              scheduler.RunWorkerAsync(1000);
          }
      }
  
  
  void scheduler_DoWork(object sender, System.ComponentModel.DoWorkEventArgs e)
  {
  
   try
   {            
      try
      {
        ...do some stuff
      }
      catch(MyException ex)
      {
         ThreadSafeShowError();
      }
      finally
      {}
      ...do more stuff
   }
   finally
   {
     if (e != null &amp;&amp; e.Argument != null)
     {
      Thread.Sleep((int)e.Argument);
     }
   }
  }
  </code></pre>
  
  <p>The backgroundworker thread died unexpectedly without any exception being thrown. I did not encounter this problem during development and it seems to be hard to reproduce. I suspected that maybe a cross thread exception was occurring when I am doing work in the scheduler_DoWork. I have tried to explicitly update the UI without checking if InvokeRequired and the thread continues to run without problems in a release build. How can this be? (Cross thread exception should occur) How can I determine what causes the thread to die? Any suggestions on how to figure out what is going wrong or how to debug this issue will be appreciated?</p>