title: How to create a form on its own thread and keep it open throughout application lifetime
body: <p>I am creating a little testing component and am running into a problem</p>
  
  <p>Basically the component is a decorator on a class that controls all access to the database, it creates a form with a two buttons on it: "Simulate Lost Connection" and "Reconnect".  Press the button, and instead of letting function calls pass through the wrapper starts throwing NoConnectionException()s nice and simple, and real helpful for testing.</p>
  
  <p>The problem is that this particular application when it detects a lost connection raises a modal dialog box "connection lost!" that sits there until the connection is regained.  Because it is modal I cannot press my nifty button to simulate regained connectivity.</p>
  
  <p>What I need to do therefore is to run my little testing form in a different thread.  I'm not absolutely sure how to do that.  I tried</p>
  
  <pre><code>new Thread(
    new ThreadStart(
      (Action)delegate {_form.Start();}
    )
  ).Start();
  </code></pre>
  
  <p>But the thread closes as soon as the method returns so the form never shows up except for an instant.</p>
  
  <p>Any idea how I go about achieving what I want?</p>