title: How to stop BackgroundWorker correctly
body: <p><br>
  I have a form with 2 comboboxes on it. And I want to fill <code>combobox2.DataSource</code> based on <code>combobox1.Text</code> and <code>combobox2.Text</code> (I assume that the user has completed input in <code>combobox1</code> and is in the middle of inputting in <code>combobox2</code>). So I have an event handler for <code>combobox2</code> like this:</p>
  
  <pre><code>private void combobox2_TextChanged(object sender, EventArgs e)
  {
      if (cmbDataSourceExtractor.IsBusy)
         cmbDataSourceExtractor.CancelAsync();
  
      var filledComboboxValues = new FilledComboboxValues{ V1 = combobox1.Text,
         V2 = combobox2.Text};
      cmbDataSourceExtractor.RunWorkerAsync(filledComboboxValues );
  }
  </code></pre>
  
  <p>As far as building DataSource is time-consuming process (it creates a request to database and executes it) I decided that it's better to perform it in another process using BackgroundWorker. So there's a scenario when cmbDataSourceExtractor hasn't completed its work and the user types one more symbol. In this case I get an exception on this line<br>
  <code>cmbDataSourceExtractor.RunWorkerAsync(filledComboboxValues );</code> about that BackgroundWorker is busy and cannot perform several actions in the same time.<br>
  How to get rid of this exception?<br>
  Thanks in advance!</p>