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