CancellationTokenSource vs. volatile boolean

在一个易失性布尔字段上使用CancellationTokenSource来表示Task完成是否有任何好处?

当然是的。 有许多。 我列举的很少。

  • CancellationToken支持回调。 您可以在要求取消时收到通知。
  • CancellationToken支持WaitHandle ,您可以等待无限期或超时。
  • 您可以使用CancellationTokenSource.CancelAfter方法安排取消CancellationTokenSource.CancelAfter
  • 您可以将CancellationToken链接到另一个,这样当一个被取消时,另一个可以被视为已取消。
  • 通过Task如果你的意思是System.Threading.Tasks.Task一个volatile boolean不能将Task的状态转换为Cancel,但CancellationToken可以。