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

Метод ContinueWith

Task.ContinueWith возвращает новую задачу-продолжение. Чтобы получить результат, внешнюю задачу дожидаются через await. Цепочки часто проще писать через await напрямую, но ContinueWith показывает связь явно.

Синтаксис

Task<int> next = task.ContinueWith(t => t.Result + 1);

Пример

Давайте прибавить единицу после FromResult:

using System; using System.Threading.Tasks; class Program { static async Task Main() { Task<int> next = Task.FromResult(1) .ContinueWith(t => t.Result + 1); int res = await next; Console.WriteLine(res); } }

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

2

Пример

Давайте построить вторую ступень цепочки:

using System; using System.Threading.Tasks; class Program { static async Task Main() { Task<int> chain = Task.FromResult(1) .ContinueWith(t => t.Result + 1) .ContinueWith(t => t.Result + 1); int res = await chain; Console.WriteLine(res); } }

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

3

Пример

Давайте вернуть строку из продолжения:

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

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

"abcde"

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

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