我正在尝试执行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);
});
但这给了我错误
无法将异步lambda表达式转换为...
答案 0 :(得分:0)
将任务3和4放在方法
中public async Task RunTask3And4()
{
var result3 = await RunTask3();
await RunTask4(result3);
}
然后与其他任务一起使用
var tasks = new[]
{
RunTask1(),
RunTask2(),
RunTask3And4()
};
await Task.WhenAll(tasks);