title: Cross thread operation not valid when use backgroundworker
body: <p>Below is my coding:</p>
  
  <pre><code>    Form2 msgForm;
      private void button3_Click_1(object sender, EventArgs e)
      {
  
          bw.WorkerReportsProgress = true;
          bw.WorkerSupportsCancellation = true;
          bw.DoWork += new DoWorkEventHandler(bw_DoWork);
          //bw.ProgressChanged += new ProgressChangedEventHandler(bw_ProgressChanged);
          bw.RunWorkerCompleted += new RunWorkerCompletedEventHandler(bw_RunWorkerCompleted);
  
          msgForm = new Form2();
  
          try
          {
              bw.RunWorkerAsync();
  
              msgForm.ShowDialog();
          }
          catch (Exception ex)
          {
              MessageBox.Show(ex.Message);
          }
      }
  
      void bw_DoWork(object sender, DoWorkEventArgs e)
      {
          if (comboBox15.Text == "")
          {
              //MessageBox.Show("Please select Printer ID.", "Status", MessageBoxButtons.OK, MessageBoxIcon.Error);
              //return;
          }
          // Coding that transmit protocol and will last around 2 minutes.
      }
  
      void bw_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
      {
          msgForm.Close();
      }
  </code></pre>
  
  <p>When I run this background worker coding, there's an error stating "Cross-thread operation not valid: Control 'comboBox15' accessed from a thread other than the thread it was created on."</p>
  
  <p>How do I solve this problem guys?</p>