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