下面是博客园上的解释,你在发帖之前就不能看看msdn或者先google一下?
调用this.backgroundWorker1.CancelAsync()并不能结束后台线程,
要想提前结束这个线程,需要在你的DoWork事件事件处理函数中进行处理,示例代码如下:
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)  
  {  
  for (int i = 0; i < 10; i++ )  
  {  
  if ((BackgroundWorker)sender.CancellationPending)  
  {  
  e.Cancel = true;   
  break;  
  }  
  //dosomething.....
  }  
  }private void worker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
  {
  if (e.Cancelled)
  {
  //Cancelled  
  }
  else
  {
  //Succeed
  }  }