title: Invoke a method on the main thread without a WinForm control to call Invoke or BeginInvoke on
body: <p>I want to run an operation on a background thread. When it has completed I want to check for any errors that occurred and re-throw them on my original thread. </p>
  
  <p>I am using a backgroundworker. Throwing an exception in the RunWorkerCompleted event handler results in an unhandled exception - this makes sense if the eventhandler is running on the background thread. If I had a winform control I could call Invoke or BeginInvoke but I do not have a winform control in this object, although it is a winform project.</p>
  
  <p>How can I re-throw an exception that occurred in the backgroundworker?</p>
  
  <pre><code>private void bgw_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
      {
          if (e.Error != null)
          {              
              // I want to throw an exception here, without causing an unhandled exception and without being able to call Invoke or BeginInvoke on a WinForm control. 
          }
          else if (e.Cancelled)
          {
             // Do something useful
          }
          else
          {
              if (e.Result != null)
              {
                 // Do something with the result
              }
          }
      }
  </code></pre>
  
  <p>I would have assumed that the RunWorkerCompleted event handler would be running on the original calling thread. Perhaps the backgroundworker is not what I need in this case. </p>