有一种情况是用户终止了应用程序,而它仍在通过 BackgroundWorker 处理数据。我想向此方法发送取消或终止命令。我尝试调用 CancelAsync() 方法,但它显然没有按我预期的方式工作,并且工作人员仍在继续处理。什么是向 BackgroundWorker 发出信号的好方法,尤其是它的 RunWorkerCompleted 方法来停止处理?我必须使用状态变量吗?
问问题
745 次
1 回答
0
这是在 BackgroundWorker 上调用 CancelAsync() 时执行的代码
public void CancelAsync()
{
if (!this.WorkerSupportsCancellation)
{
throw new InvalidOperationException(SR.GetString
("BackgroundWorker_WorkerDoesntSupportCancellation"));
}
this.cancellationPending = true;
}
如您所见,他们cancellationPending
在检查WorkerSupportsCancellation
.
WorkerSupportsCancellation = true;
因此,当您退出应用程序调用backGroundWorkerInstance.CancelAsync()
并在 DoWork 或 RunWorkerCompleted 中测试 CancellationPending时,您需要设置。如果它是真的停止你的过程。
于 2012-08-31T21:16:28.767 回答