Есть ли какие-либо преимущества для использования CancellationTokenSource над volatile boolean field для сигнализации a Task
для завершения?
CancellationTokenSource vs volatile boolean
Ответ 1
Конечно, да. Здесь очень много. Я перечислю несколько.
-
CancellationToken
поддерживает обратные вызовы. Вы можете получать уведомления, когда требуется аннулирование. -
CancellationToken
поддерживаетWaitHandle
, который вы можете ждать бесконечно или с таймаутом. - Вы можете запланировать отмену
CancellationToken
с помощью методаCancellationTokenSource.CancelAfter
. - Вы можете связать свой
CancellationToken
с другим, чтобы при отмене другого можно считать отмененным. - В
Task
, если вы имеете в видуSystem.Threading.Tasks.Task
, volatile boolean не может перевести состояние задачи на отмену, ноCancellationToken
может.