Как ждать Задачу <T>(async () => ...) - PullRequest
0 голосов
/ 30 апреля 2018

Я пытаюсь выполнить 4 асинхронные задачи, такие как

---- Task 1 -------------------
---- Task 2 -------------------
---- Task 3 ----- Task 4 ------

(ось X - время)

У меня есть

Task<T1> doT1 = ...
Task<T2> doT2 = ...

и мне нужна задача-оболочка doT3T4, которая последовательно выполняет 3 и 4, например

T3 t3result = await ...
return await SomethingThatUsesT3ResultAsync(t3result);

тогда я могу сделать

await Task.WhenAll(doT1, doT2, doT3T4);

Я пытался

var doT3T4 = new Task<T4>(async () => {
  T3 t3result = await ...
  return await SomethingThatUsesT3ResultAsync(t3result);
});

но это дает мне ошибку

Невозможно преобразовать асинхронное лямбда-выражение в ...

1 Ответ

0 голосов
/ 30 апреля 2018

Поместите задачи 3 и 4 в метод

public async Task RunTask3And4()
{
    var result3 = await RunTask3();
    await RunTask4(result3);
}

Тогда используйте с другими задачами

var tasks = new[]
{
    RunTask1(),
    RunTask2(),
    RunTask3And4()
};
await Task.WhenAll(tasks);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...