0

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

4

1 回答 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 回答