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

Метод TryWrite

ChannelWriter.TryWrite сразу возвращает false, если канал полон или закрыт. В CreateBounded(1) второй вызов без чтения не проходит. С ожиданием - WriteAsync.

Синтаксис

bool ok = writer.TryWrite(item);

Пример

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

using System; using System.Threading.Channels; using System.Threading.Tasks; class Program { static async Task Main() { var channel = Channel.CreateBounded<int>(1); bool first = channel.Writer.TryWrite(1); bool second = channel.Writer.TryWrite(2); Console.WriteLine(first); Console.WriteLine(second); } }

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

True False

Пример

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

using System; using System.Threading.Channels; using System.Threading.Tasks; class Program { static async Task Main() { var channel = Channel.CreateUnbounded<int>(); bool first = channel.Writer.TryWrite(1); bool second = channel.Writer.TryWrite(2); Console.WriteLine(first); Console.WriteLine(second); } }

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

True True

Пример

Давайте вызвать TryWrite после Complete:

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

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

False

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

  • метод WriteAsync,
    запись с ожиданием
  • метод TryRead,
    симметричное чтение
  • метод CreateBounded,
    ёмкость канала
  • ChannelWriter,
    класс, где объявлен метод
← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить