一次启动多少个异步(非多线程)操作?这是可配置的吗

本文关键字:配置 操作 一次 启动 多少 异步 多线程 | 更新日期: 2023-09-27 18:03:45

  1. 例如,如果我调用WebClient.DownloadStringTaskAsync() 100次,那么实际上有多少任务是并行处理的
  2. 我可以配置它吗?或者我需要使用List<Task>Task.WaitAny()来维护它们的编号
  3. 有没有一种简单的方法可以在调试器中查看它们的编号
  4. 在这种情况下(处理大量异步任务(的最佳实践是什么

注意:我没有使用Task.Run((,所以没有启动其他线程(据我所知(

一次启动多少个异步(非多线程)操作?这是可配置的吗

并行度由ServicePoint基础结构控制,我对此并不完全理解。默认限制为ServicePointManager.DefaultConnectionLimit。这是每个人都使用的。我从未见过有人使用ServicePoint

我建议禁用限制并自己执行限制。对我来说,对整个AppDomain使用一个全局限制是没有意义的。依赖DefaultConnectionLimit也是隐藏的和未记录的。此外,DefaultConnectionLimit默认为非常不同的默认值,具体取决于环境(2与int.MaxValue!(

(4( 有一些代码是浮动的,允许您以一定程度的并行度异步处理一系列项目。这就是要走的路。受控的并行、异步和流式处理,具有恒定的内存使用率。