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

Метод ReadAllAsync

ChannelReader.ReadAllAsync работает с await foreach, пока писатель не вызвал Complete и очередь не опустела. Один элемент - через ReadAsync.

Синтаксис

await foreach (int item in reader.ReadAllAsync()) { }

Пример

Давайте суммировать 1 и 2 после Complete:

using System; using System.Threading.Channels; using System.Threading.Tasks; class Program { static async Task Main() { var channel = Channel.CreateUnbounded<int>(); await channel.Writer.WriteAsync(1); await channel.Writer.WriteAsync(2); channel.Writer.Complete(); int sum = 0; await foreach (int item in channel.Reader.ReadAllAsync()) { sum += item; } Console.WriteLine(sum); } }

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

3

Пример

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

using System; using System.Threading.Channels; using System.Threading.Tasks; class Program { static async Task Main() { var channel = Channel.CreateUnbounded<int>(); await channel.Writer.WriteAsync(1); await channel.Writer.WriteAsync(2); channel.Writer.Complete(); int count = 0; await foreach (int _ in channel.Reader.ReadAllAsync()) { count++; } Console.WriteLine(count); } }

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

2

Пример

Давайте прочитать пустой закрытый канал:

using System; using System.Threading.Channels; using System.Threading.Tasks; class Program { static async Task Main() { var channel = Channel.CreateUnbounded<int>(); channel.Writer.Complete(); int sum = 0; await foreach (int item in channel.Reader.ReadAllAsync()) { sum += item; } Console.WriteLine(sum); } }

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

0

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

  • метод ReadAsync,
    один элемент за раз
  • метод Complete,
    завершить запись
  • свойство Completion,
    задача конца чтения
  • ChannelReader,
    класс, где объявлен метод
← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить