我的问题是,当一个任务有一个 Task.WhenAll() 调用(运行其他任务)时,WhenAll() 行使消费代码继续执行,这与我所期望的不同。因此,以下代码在 Task.WhenAll() 被命中时立即输出“完成”,而不是在其参数中的所有任务都完成之后。
// Just a simple async method
public Task DoWorkAsync()
{
return Task.Factory.StartNew(
() =>
{
// Working
});
}
// This one used the previous one with Task.WhenAll()
public Task DoLoadsOfWorkAsync()
{
return Task.Factory.StartNew(
async () =>
{
// Working
// This line makes the task return immediately
await Task.WhenAll(DoWorkAsync(), DoWorkAsync());
// Working
});
}
// Consuming code
await DoLoadsOfWorkAsync();
Console.WriteLine("finished");
我希望在执行 DoLoadsOfWorkAsync() 的最后一行时调用 WriteLine()。
我究竟做错了什么?提前致谢。