1 回答
TA贡献1773条经验 获得超3个赞
我可以理解这句话似乎建议不要使用ThrowIfCancellationRequested
,但事实并非如此——使用ThrowIfCancellationRequested
是合适的。
有几个来源表明使用ThrowIfCancellationRequested
是合适的:
ThrowIfCancellationRequested
表明这是正确的方法。
抛出
OperationCanceledException
是 TPL 中表达“您调用的方法被取消”的惯用方式。不要反对它——只是期待它。
Microsoft 的此消息 表明这ThrowIfCancellationRequested
是正确的方法。
成功取消涉及请求代码调用 CancellationTokenSource.Cancel 方法,以及用户委托及时终止操作。您可以使用以下选项之一终止操作:
只需从委托返回即可[剪掉该项目符号的其余部分]
通过抛出 OperationCanceledException 并向其传递请求取消的令牌。执行此操作的首选方法是使用 ThrowIfCancellationRequested 方法。以这种方式取消的任务将转换为已取消状态,调用代码可以使用该状态来验证任务是否响应了其取消请求
还有一个代码示例演示如何ThrowIfCancellationRequested
正确使用。
进一步阅读此 Microsoft 源代码的另一句话:
当任务实例观察到用户代码引发的 OperationCanceledException 时...任务会将其解释为确认取消并转换到“已取消”状态。
...
另请注意,其他异常的存在也会导致任务转换到Faulted状态......
我怀疑(这只是我试图协调两个来源)这就是您引用的建议所指的内容——这是一个避免破坏取消机制准确指示任务状态为已取消或故障的能力的建议
- 1 回答
- 0 关注
- 90 浏览
添加回答
举报