不需要取消的异步方法

Use*_*rol 5 .net asynchronous task-parallel-library async-await

学习取消异步任务发现这篇文章

作为在 .NET Framework 4.5 中支持基于任务的异步编程模型的一部分,我们将该CancellationToken结构添加到 .NET Framework 中大量异步 API 的签名中。例如,HttpClient该类公开了一个GetAsync接受取消标记的方法重载。但是,并非所有异步方法都支持取消。例如,如果您查看HttpContent该类,该LoadIntoBufferAsync方法不会公开带有取消标记的重载。

CancellationToken在签名中公开的异步操作与不公开的异步操作之间的根本区别是什么?

ta.*_*.is 5

在签名中公开 CancellationToken 的异步操作与不公开的异步操作之间的根本区别是什么?

在其签名中公开 CancellationToken 的异步操作:

  • 可以取消

不在其签名中公开 CancellationToken 的异步操作:

  • 不能取消;或者
  • 它们可以通过其他方式取消(例如yourAsyncObject.Dispose很好地包装所有东西)

  • 至于“他们为什么不支持取消”可能是 a) 懒惰 b) 他们只调用其他不支持取消的异步方法 c) 它们是同步实现的 d) 他们不必支持取消 e)以上所有 f) 其他。 (4认同)