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

Класс ChannelReader

ChannelReader<T> берут из Channel. Ожидание элемента - ReadAsync, мгновенная попытка - TryRead. Конец канала - Completion.

Синтаксис

ChannelReader<int> reader = channel.Reader; int value = await reader.ReadAsync();

Пример

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

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(12345); ChannelReader<int> reader = channel.Reader; int res = await reader.ReadAsync(); Console.WriteLine(res); } }

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

12345

Пример

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

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); Console.WriteLine(await channel.Reader.ReadAsync()); Console.WriteLine(await channel.Reader.ReadAsync()); } }

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

1 2

Пример

Давайте попробовать TryRead из пустого канала:

using System; using System.Threading.Channels; using System.Threading.Tasks; class Program { static async Task Main() { var channel = Channel.CreateUnbounded<int>(); bool res = channel.Reader.TryRead(out _); Console.WriteLine(res); } }

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

False

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

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