什么时候CancellationToken.CanBeCanceled可以为假?

时间:2010-11-22 13:11:18

标签: .net multithreading cancellation-token

CancellationToken.CanBeCanceled上的文档描述了它的作用,但未提及它何时可能是错误的。因此,当我应该注意这个属性时,我并不完全清楚。

在哪种情况下它可能是错误的,何时应该看它?

2 个答案:

答案 0 :(得分:9)

好吧,CancellationToken.None会返回一个不可取消的内容。

如果您是坚持收到CancellationToken的API的用户,但您没有兴趣尝试取消该工作,那么您可以将此令牌传递给它。

当某人构建 API时,如果CanBeCancelled返回false,您可以进行某些优化 - 也许您检查IsCancellationRequested属性是“昂贵的”。

答案 1 :(得分:0)

例如,当async方法的“整个”代码是远程机器(例如服务器)上的调用方法时,无法取消(远程机器不提供任何方式,如何取消它)。然后该任务无法取消 - >任务只能完成(或抛出异常)。