CreateLinkedTokenSource
CreateLinkedTokenSource у
CancellationTokenSource
отменяет связанный источник, когда отменён
любой из переданных
CancellationToken.
Cancel у одного родителя не отменяет
токены другого родителя напрямую.
Синтаксис
CancellationTokenSource linked =
CancellationTokenSource.CreateLinkedTokenSource(
token1, token2);
Пример
Давайте отменить первый источник a:
using System;
using System.Threading;
class Program
{
static void Main()
{
CancellationTokenSource a = new CancellationTokenSource();
CancellationTokenSource b = new CancellationTokenSource();
CancellationTokenSource linked =
CancellationTokenSource.CreateLinkedTokenSource(
a.Token, b.Token);
a.Cancel();
bool linkedFlag = linked.Token.IsCancellationRequested;
bool bFlag = b.Token.IsCancellationRequested;
Console.WriteLine(linkedFlag);
Console.WriteLine(bFlag);
linked.Dispose();
a.Dispose();
b.Dispose();
}
}
Результат выполнения кода:
True
False
Пример
Давайте проверить до отмены:
using System;
using System.Threading;
class Program
{
static void Main()
{
CancellationTokenSource a = new CancellationTokenSource();
CancellationTokenSource b = new CancellationTokenSource();
CancellationTokenSource linked =
CancellationTokenSource.CreateLinkedTokenSource(
a.Token, b.Token);
bool res = linked.Token.IsCancellationRequested;
Console.WriteLine(res);
linked.Dispose();
a.Dispose();
b.Dispose();
}
}
Результат выполнения кода:
False
Пример
Давайте отменить второй источник b:
using System;
using System.Threading;
class Program
{
static void Main()
{
CancellationTokenSource a = new CancellationTokenSource();
CancellationTokenSource b = new CancellationTokenSource();
CancellationTokenSource linked =
CancellationTokenSource.CreateLinkedTokenSource(
a.Token, b.Token);
b.Cancel();
bool linkedFlag = linked.Token.IsCancellationRequested;
bool aFlag = a.Token.IsCancellationRequested;
Console.WriteLine(linkedFlag);
Console.WriteLine(aFlag);
linked.Dispose();
a.Dispose();
b.Dispose();
}
}
Результат выполнения кода:
True
False
Смотрите также
-
Cancel,
отмена одного из источников -
Token,
токены родителей -
IsCancellationRequested,
флаг связанного токена -
Dispose,
закрыть связанный источник