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

EnumeratorCancellation

EnumeratorCancellation ставят на необязательный CancellationToken параметра async-итератора. await foreach без отмены суммирует 1 и 2 → 3. Токен по умолчанию: CanBeCanceled равен False. Отмену не вызывают.

Синтаксис

static async IAsyncEnumerable<int> Count( [EnumeratorCancellation] CancellationToken token = default)

Пример

Давайте пройти итератор без отмены:

using System; using System.Collections.Generic; using System.Runtime.CompilerServices; using System.Threading; using System.Threading.Tasks; class Program { static async IAsyncEnumerable<int> Count( [EnumeratorCancellation] CancellationToken token = default) { yield return 1; yield return 2; } static async Task Main() { int sum = 0; await foreach (int n in Count()) { sum += n; } int res = sum; Console.WriteLine(res); } }

Результат выполнения кода:

3

Пример

Давайте проверить токен по умолчанию:

using System; using System.Threading; class Program { static void Main() { CancellationToken token = default; bool res = token.CanBeCanceled; Console.WriteLine(res); } }

Результат выполнения кода:

False

Пример

Давайте посчитать элементы в цикле:

using System; using System.Collections.Generic; using System.Runtime.CompilerServices; using System.Threading; using System.Threading.Tasks; class Program { static async IAsyncEnumerable<int> Count( [EnumeratorCancellation] CancellationToken token = default) { yield return 1; yield return 2; } static async Task Main() { int items = 0; await foreach (int n in Count()) { items++; } int res = items; Console.WriteLine(res); } }

Результат выполнения кода:

2

Смотрите также

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить