异步/等待最大并发http请求数

Lor*_*sen 4 c# async-await

当Async/Await发出http请求时(HttpClient例如使用),默认情况下是否内置了任何限制?

这样的问题意味着连接无限数量的将被打开.我的应用程序在一个循环中执行一批h​​ttp请求,似乎保持在大约50个TCP连接上限.

我最初担心我需要添加SemaphoreSlim限制,但.NET似乎为我做这个.任何人都可以对此有所了解吗?

i3a*_*non 6

.Net框架中的连接存在限制.例如ServicePointManager,DefaultConnectionLimit这允许您限制并发操作.

但是,我不建议将其用于限制.如果您需要控制您的请求,您应该使用SemaphoreSlim,特别是WaitAsync当您在async-await环境中时,这些请求是IO绑定的(并且很长).

使用SemaphoreSlim.WaitAsync意味着您不会阻塞并且您异步等待,这对于任何其他非async限制机制都不是这种情况.此外,您不希望在能够完成操作之前启动该操作.