Есть ли какие-либо преимущества для использования 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может.