取消没有worker的后台工作人员。取消检查?

时间:2014-03-11 12:20:36

标签: c# backgroundworker

我有一个Validator类,它有一个Validate函数,这个验证函数循环遍历一堆文件并验证它们。用户可以取消验证过程。

对于取消后台工作者,我需要在Validtor类中引用后台工作器实例(用于取消验证过程)并在其上调用CancellationPending

但问题是Validator类不能引用后台worker,因为有时我们同步调用“Validate”函数而Validator类不必知道这一点。

到目前为止,我已尝试用某些标记替换backgroundworker.CancellationPending支票,例如IsCanceled似乎不起作用。

1 个答案:

答案 0 :(得分:0)

您有两种选择:

  1. Validate方法进行两次重载。一个是同步的,一个是异步的和可取消的。
  2. 更改您的Validate方法,以便调用代码负责循环文件(考虑使用yield的迭代器方法)
  3. 我选择选项1,因为这是一个较小的变化。