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

Метод TryRead

ChannelReader.TryRead из пустого канала возвращает false и не бросает. С ожиданием - ReadAsync. Запись без ожидания - TryWrite.

Синтаксис

bool ok = reader.TryRead(out int item);

Пример

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

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

Пример

Давайте снять записанное 1:

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

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

True 1

Пример

Давайте дважды прочитать, когда в очереди один элемент:

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

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

False

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

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