Cancel
Cancel у
CancellationTokenSource
ставит
IsCancellationRequested
в true у
Token.
Повторный вызов не бросает исключение.
После
Dispose
Cancel даёт ObjectDisposedException.
Синтаксис
cts.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 дважды:
using System;
using System.Threading;
class Program
{
static void Main()
{
CancellationTokenSource cts = new CancellationTokenSource();
cts.Cancel();
cts.Cancel();
Console.WriteLine(cts.Token.IsCancellationRequested);
cts.Dispose();
}
}
Результат выполнения кода:
True
Пример
Давайте запустить обработчик через
Register:
using System;
using System.Threading;
class Program
{
static void Main()
{
string res = "12345";
CancellationTokenSource cts = new CancellationTokenSource();
cts.Token.Register(() => res = "abcde");
cts.Cancel();
Console.WriteLine(res);
cts.Dispose();
}
}
Результат выполнения кода:
"abcde"
Смотрите также
-
CancelAfter,
отмена по таймеру -
ThrowIfCancellationRequested,
сбой после отмены -
Token,
кому передаётся флаг -
CreateLinkedTokenSource,
отмена связанного источника