【发布时间】:2014-03-11 12:20:35
【问题描述】:
我有一个Validator 类,它有一个Validate 函数,这个验证函数循环遍历一堆文件并验证它们。用户可以取消验证过程。
为了取消后台工作人员,我需要在 Validtor 类中引用后台工作人员实例(用于取消验证过程)并在其上调用 CancellationPending。
但问题是 Validator 类不能引用后台工作器,因为有时我们会同步调用“Validate”函数,而 Validator 类不必知道这一点。
到目前为止,我已经尝试用一些标志替换 backgroundworker.CancellationPending 检查,例如IsCanceled 这似乎不起作用。
【问题讨论】:
-
您可以将您的工作封装在一个
while(!Abort)调用中并设置字段,但我建议您考虑使用Task执行 CPU 密集型工作,它支持CancellationTokens
标签: c# backgroundworker