WPF中的BackgroundWorker.RunWorkerCompleted事件
有一种情况是,用户终止应用程序,而应用程序仍在通过BackgroundWorker处理数据。 我想向此方法发送取消或终止命令。我尝试调用CancelAsync()方法,但它显然没有按我预期的方式工作,而且工作人员仍在继续处理。 向BackgroundWorker,特别是其RunWorkerCompleted方法发出停止处理的信号的好方法是什么?WPF中的BackgroundWorker.RunWorkerCompleted事件,backgroundworker,Backgroundworker,有一种情况是,用户终止应用程序,而应用程序仍在通过BackgroundWorker处理数据。 我想向此方法发送取消或终止命令。我尝试调用CancelAsync()方法,但它显然没有按我预期的方式工作,而且工作人员仍在继续处理。 向BackgroundWorker,特别是其RunWorkerCompleted方法发出停止处理的信号的好方法是什么? 我必须使用状态变量吗?这是在BackgroundWorker上调用CancelAsync()时执行的代码 public void CancelAsync
我必须使用状态变量吗?这是在BackgroundWorker上调用CancelAsync()时执行的代码
public void CancelAsync()
{
if (!this.WorkerSupportsCancellation)
{
throw new InvalidOperationException(SR.GetString
("BackgroundWorker_WorkerDoesntSupportCancellation"));
}
this.cancellationPending = true;
}
如您所见,在检查WorkerSupportsCancellation
的值后,他们将内部cancellation
变量设置为true
因此,您需要设置
WorkerSupportsCancellation=true代码>,当您退出应用程序调用backGroundWorkerInstance.CancelAsync()
并在DoWork或RunWorkerCompleted测试中执行CancellationPending。如果是真的,请停止您的流程。是否已将backgroundWorker.worker支持扫描单元设置为真代码>?我知道取消backgroundworker的唯一方法是通过CancelAsync和WorkerSupportsScanCellation属性并测试CancellationPending属性