WPF中的BackgroundWorker.RunWorkerCompleted事件

WPF中的BackgroundWorker.RunWorkerCompleted事件,backgroundworker,Backgroundworker,有一种情况是,用户终止应用程序,而应用程序仍在通过BackgroundWorker处理数据。 我想向此方法发送取消或终止命令。我尝试调用CancelAsync()方法,但它显然没有按我预期的方式工作,而且工作人员仍在继续处理。 向BackgroundWorker,特别是其RunWorkerCompleted方法发出停止处理的信号的好方法是什么? 我必须使用状态变量吗?这是在BackgroundWorker上调用CancelAsync()时执行的代码 public void CancelAsync

有一种情况是,用户终止应用程序,而应用程序仍在通过BackgroundWorker处理数据。 我想向此方法发送取消或终止命令。我尝试调用CancelAsync()方法,但它显然没有按我预期的方式工作,而且工作人员仍在继续处理。 向BackgroundWorker,特别是其RunWorkerCompleted方法发出停止处理的信号的好方法是什么?
我必须使用状态变量吗?

这是在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属性