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

Модификатор async

Ключевое слово async ставят перед типом возвращаемого значения метода. Такой метод обычно возвращает Task или Task<T> из System.Threading.Tasks. Внутри можно писать await, но сам урок сосредоточен на объявлении async-метода и его сигнатуре.

Синтаксис

async Task Имя() { // тело } async Task<T> Имя() { // тело }

Пример

Давайте объявим async-метод, который возвращает строку:

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

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

"abcde"

Пример

Давайте объявим async-метод без результата:

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

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

"done"

Пример

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

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

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

12

Пример

Давайте вызовем два async-метода подряд:

using System; using System.Threading.Tasks; class Program { static async Task<string> GetFirstAsync() { return "abcde"; } static async Task<string> GetSecondAsync() { return "12345"; } static async Task Main() { string a = await GetFirstAsync(); string b = await GetSecondAsync(); Console.WriteLine(a + b); } }

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

"abcde12345"

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

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