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

async-лямбда

Запись async () => ... даёт делегат, возвращающий Task или Task<T>. Его можно await как обычную задачу. В отличие от async void результат ожидают. Готовое число - через FromResult.

Синтаксис

Func<Task<int>> work = async () => 12345; int value = await work();

Пример

Давайте вызвать async лямбду:

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

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

12345

Пример

Давайте дождаться FromResult внутри лямбды:

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

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

"abcde"

Пример

Давайте передать лямбду в Task.Run:

using System; using System.Threading.Tasks; class Program { static async Task Main() { Func<Task<int>> f = async () => 12345; int res = await Task.Run(f); Console.WriteLine(res); } }

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

12345

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

  • async void,
    метод без возвращаемой задачи
  • метод Run,
    запуск делегата
  • метод ConfigureAwait,
    настройка await
  • Task,
    тип, который возвращает лямбда
← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить