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

Оператор await

await ставят перед выражением, которое даёт Task или Task<T>. Пока задача не завершена, управление возвращается вызывающему коду; после завершения async-метод продолжается, а для Task<T> вы получаете значение типа T. Точка входа оформляют как static async Task Main.

Синтаксис

await задача; тип res = await задачаСРезультатом;

Пример

Давайте дождёмся готовой строки из задачи:

using System; using System.Threading.Tasks; class Program { static async Task Main() { string res = await Task.FromResult("abcde"); Console.WriteLine(res); } }

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

"abcde"

Пример

Давайте дождёмся задачи без результата:

using System; using System.Threading.Tasks; class Program { static async Task Main() { await Task.CompletedTask; Console.WriteLine("done"); } }

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

"done"

Пример

Давайте получим число через Task<int>:

using System; using System.Threading.Tasks; class Program { static async Task Main() { int res = await Task.FromResult(12); Console.WriteLine(res); } }

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

12

Пример

Давайте вызовем async-метод и дождёмся его через await:

using System; using System.Threading.Tasks; class Program { static async Task<string> GetStrAsync() { return await Task.FromResult("12345"); } static async Task Main() { string res = await GetStrAsync(); Console.WriteLine(res); } }

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

"12345"

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

  • модификатор async,
    которым помечают метод с await
  • await foreach,
    который ждёт элементы асинхронной последовательности
  • метод FromResult,
    который создаёт завершённую задачу с данными
  • свойство CompletedTask,
    которое даёт уже завершённую пустую задачу
← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить