CancelAfter
CancelAfter у
CancellationTokenSource
ставит таймер. CancelAfter(0)
отменяет сразу, без долгого ожидания.
CancelAfter(Timeout.InfiniteTimeSpan)
сам по себе флаг не поднимает. Положительные
задержки в примерах не используют.
Синтаксис
cts.CancelAfter(TimeSpan.Zero);
cts.CancelAfter(Timeout.InfiniteTimeSpan);
Пример
Давайте вызвать CancelAfter(0):
using System;
using System.Threading;
class Program
{
static void Main()
{
CancellationTokenSource cts = new CancellationTokenSource();
cts.CancelAfter(0);
bool res = cts.Token.IsCancellationRequested;
Console.WriteLine(res);
cts.Dispose();
}
}
Результат выполнения кода:
True
Пример
Давайте вызвать CancelAfter(Timeout.InfiniteTimeSpan):
using System;
using System.Threading;
class Program
{
static void Main()
{
CancellationTokenSource cts = new CancellationTokenSource();
cts.CancelAfter(Timeout.InfiniteTimeSpan);
bool res = cts.Token.IsCancellationRequested;
Console.WriteLine(res);
cts.Dispose();
}
}
Результат выполнения кода:
False
Пример
Давайте сравнить с ручным Cancel:
using System;
using System.Threading;
class Program
{
static void Main()
{
CancellationTokenSource cts = new CancellationTokenSource();
cts.Cancel();
bool res = cts.Token.IsCancellationRequested;
Console.WriteLine(res);
cts.Dispose();
}
}
Результат выполнения кода:
True
Смотрите также
-
Cancel,
мгновенная отмена -
IsCancellationRequested,
проверка флага -
Token,
токен источника -
Dispose,
освободить таймер