CancellationTokenSource 与 volatile 布尔值

CancellationTokenSource vs. volatile boolean

使用 CancellationTokenSource over a volatile 布尔字段来指示 Task 完成有什么好处吗?

当然可以。有许多。我会列出几个。

  • CancellationToken 支持回调。当请求取消时,您会收到通知。
  • CancellationToken 支持 WaitHandle,您可以无限期地等待或超时。
  • 您可以使用 CancellationTokenSource.CancelAfter 方法安排取消 CancellationToken
  • 您可以 link 您的 CancellationToken 到另一个,这样当一个被取消时,另一个可以被视为被取消。
  • Task 如果你的意思是 System.Threading.Tasks.Task 可变布尔值不能将任务的状态转换为已取消但 CancellationToken 可以。