Task.WhenAll 是否有“限制”?

Joe*_*oel 5 .net c# async-await .net-core .net-6.0

如果我需要在循环中执行 IO 操作,我可以创建 sTask并且它们等待它们全部。像这样的东西:

var tasks = new List<Task>();
for (var dataToProcess in listOfData) {
    tasks.Add(DoSomeIOAsync(dataToProcess));
}

await Task.WhenAll(tasks);
Run Code Online (Sandbox Code Playgroud)

我如何推断合理的dataToProcessin数量listOfData是多少?

如果DoSomeIOAsync是异步的,那么所使用的线程将在等待 IO 时返回。所以我想没有线程池饥饿的风险?

内存中存在大量Task状态机的开销是否可能成为问题?

我可以使用一些指导方针来推理这个问题吗?