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

Метод CreateBounded

Channel.CreateBounded с ёмкостью 1 принимает только один элемент без чтения. Второй TryWrite даёт false. Без лимита - CreateUnbounded.

Синтаксис

Channel<int> channel = Channel.CreateBounded<int>(1);

Пример

Давайте запишем 1 и проверим вторую попытку:

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

Пример

Давайте прочитаем элемент и убедимся, что в канале был 1:

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

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

1

Пример

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

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

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

True

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

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