title: Closing the Form opened in another thread
body: <p>I'm getting some troubles with my Winforms C# app.
  I wish to make form named <code>Popup</code> closing after some operations in main thread are done. The problem is an exception caused by cross-thread form closing.</p>
  
  <pre><code>private void loginButton_Click(object sender, EventArgs e)
  {
      LoginProcess.Start();    // Running Form.show() in new thread
      ActiveAcc.IsValid = false;
      ActiveAcc.Username = userBox.Text;
  
      try
      {
          LoginCheck(userBox.Text, passBox.Text);
      }
      catch (IOException)
      {
          MessageBox.Show("..");
          return;
      }
      catch (SocketException)
      {
          MessageBox.Show("..");
          return;
      }
  
      if (ActiveAcc.IsValid)
      {
          MessageBox.Show("..");
          Close();
      }
      else
      {
          Popup.Close();      // Error caused by closing form from different thread
          MessageBox.Show("");
      }
  }
  
  public Login()             // 'Main' form constructor
  {
      InitializeComponent();
  
      ActiveAcc = new Account();
      Popup = new LoginWaiter();
      LoginProcess = new Thread(Popup.Show);      //Popup is an ordinary Form
  }
  </code></pre>
  
  <p>I've been trying to use various tools such as <code>LoginProcess.Abort()</code> or <code>Popup.Dispose()</code> to make it work properly, but even if app is working on runtime environment its still unstable due to Exceptions which are thrown.
  I would be grateful for any help, and I am sorry for ambiguities in issue describing.</p>