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

Свойство Completion

ChannelReader.Completion становится завершённой после Complete и опустошения очереди. Свойство IsCompleted у этой задачи показывает, что читать больше нечего.

Синтаксис

Task done = reader.Completion; await reader.Completion;

Пример

Давайте проверить IsCompleted после 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.Reader.Completion.IsCompleted; Console.WriteLine(res); } }

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

True

Пример

Давайте дождаться Completion через await:

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

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

True

Пример

Давайте прочитать данные, затем дождаться конца:

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); channel.Writer.Complete(); await channel.Reader.ReadAsync(); await channel.Reader.Completion; bool res = channel.Reader.Completion.IsCompleted; Console.WriteLine(res); } }

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

True

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

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