Токен отмены CancellationToken в C#
Структура CancellationToken - сигнал отмены по согласованию. Поток из-за неё не обрывают: долгая операция сама смотрит на токен и останавливается.
Токен выдаёт источник CancellationTokenSource. Вызов Cancel помечает токен отменённым, и операция, которой его передали, должна сама остановиться.
Отменим источник до паузы. Task.Delay с этим токеном сразу завершается ошибкой, строка "ok" не печатается:
using CancellationTokenSource cts = new();
CancellationToken token = cts.Token;
cts.Cancel();
try
{
await Task.Delay(1000, token);
Console.WriteLine("ok");
}
catch (OperationCanceledException)
{
Console.WriteLine(1); // выведет 1
}
Отмените токен до начала паузы и выведите "stopped", если пауза была прервана.