gpt4 book ai didi

linq - Task.WhenAll 何时枚举?

转载 作者:行者123 更新时间:2023-12-03 09:09:36 31 4
gpt4 key购买 nike

我对异步编程还很陌生。我想在等待其中任何一个任务之前启动一系列任务(发出 http 请求)。

List<Guid> identifiers;

//Set identifiers to what they should be

var task = Task.WhenAll(identifiers.Select(id => _serviceConnector.GetAsync(id)));

// Call and await another request

await task;

我的问题是:我的http请求会随着通过Task.WhenAll创建任务而启动吗?或者直到更进一步的等待才会开始?谢谢!

最佳答案

WhenAll 立即(同步)具体化其可枚举参数。因此,所有任务都将在 WhenAll 返回时开始。

如果你仔细想想,这是有道理的。 WhenAll 必须知道它正在等待多少个任务,以便它知道自己的任务何时完成。此外,它必须链接到每个任务,以便在每个子任务完成时收到通知。没有其他时间来做这项工作;它必须在返回之前进行计数并设置通知。

关于linq - Task.WhenAll 何时枚举?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43761564/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com