Создаем портфолио за 1 месяц
К концу месяца: 4 классных проекта в вашем портфолио! Стоимость: 100$. Подробности...
1201 of 1492 menu
◀ ▶

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,
    закрыть связанный источник
← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить