首页 新闻 会员 周边

wpf如何取消把backgroundWorker的后台线程

0
悬赏园豆:10 [已解决问题] 解决于 2015-10-19 18:29

在开启起一个Backgroundworker 线程,调用worker.CancelAsync() 却检测到线程还在执行 worker.IsBusy == true,
并且已经设置了WorkerSupportsCancellation为true,请问有什么方法可以关闭Backgroundworker 线程么?

Opiece的主页 Opiece | 初学一级 | 园豆:195
提问于:2015-10-11 20:45
< >
分享
最佳答案
0

调用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
  }

  }

收获园豆:10
JackWang-CUMT | 老鸟四级 |园豆:2866 | 2015-10-12 08:38
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册