title: How to correctly implement a multi-window application in C#?
body: <p>I have a C# Winforms application which supports multiple windows, similar to a browser.</p>
  
  <p>At the moment, when the user launches a new window, I just find the process name and launch the process again.  This seems like a bit of a hack, and it comes with the extra problem that the new window has to do a lot of redundant application initialization work.</p>
  
  <p>I tried this:</p>
  
  <pre><code>var form = new MainForm();
  form.Show()
  </code></pre>
  
  <p>But this has the hidden caveat that closing the main window (which looks like any other window) results in closing all windows.</p>
  
  <p>How can I make my program behave like a browser, where each window is independent but we don't launch a new process every time?</p>
  
  <p>(Note: I think Chrome is an exception in that it launches a new process for each window!)</p>