我有这个方法:
public async Task Method1Async()
{
var foo = 1;
var bar = 100;
List<Task> tasks = new List<Task>();
for (int i = 0; i < 10; i++)
{
// add below code here
}
await Task.WhenAll(tasks);
}
我想将此代码添加到上面的tasks
并等待所有人完成:
// do something
await Method2Async(foo, bar);
// do something else
我该怎么做?感谢..
我试过这个,但Task.WhenAll
等待永远:
public async Task Method1Async()
{
var foo = 1;
var bar = 100;
List<Task> tasks = new List<Task>();
for (int i = 0; i < 10; i++)
{
tasks.Add(new Task(async () =>
{
// do something
await Method2Async(foo, bar);
// do something else
}
}
await Task.WhenAll(tasks);
}
答案 0 :(得分:2)
您可以直接添加Task
:
tasks.Add(Method2Async(foo, bar));
如果你想围绕它做一些工作,你可以构造一个异步lambda并调用它:
for(int i = 0; i < 10; ++i) {
Func<Task> f = async () => {
//do something
await Method2Async(foo, bar);
//do something else
}
tasks.Add(f());
}