相关疑难解决方法(0)

如何限制并发异步I/O操作的数量?

// let's say there is a list of 1000+ URLs
string[] urls = { "http://google.com", "http://yahoo.com", ... };

// now let's send HTTP requests to each of these URLs in parallel
urls.AsParallel().ForAll(async (url) => {
    var client = new HttpClient();
    var html = await client.GetStringAsync(url);
});
Run Code Online (Sandbox Code Playgroud)

这是问题所在,它会同时启动1000多个Web请求.有没有一种简单的方法来限制这些异步http请求的并发数量?这样在任何给定时间都不会下载超过20个网页.如何以最有效的方式做到这一点?

c# asynchronous task-parallel-library async-await async-ctp

103
推荐指数
5
解决办法
4万
查看次数

HttpWebRequest对每个主机的2个连接的限制是否适用于HttpClient?

是否有人知道,如果每个主机的2个连接的(默认)速率限制适用于System.Net.Http.HttpClient.

请说明您的信息来源以及是否可以像这样增加此限制,或者是否有更好/更简单的方法.

此外,是否有限制器实施?例如每分钟40个电话?

有使用无扩展的节流策略一个很好的文章在这里,但我不知道是否有一个HttpClient的方式做到这一点.

c# httpwebrequest dotnet-httpclient

5
推荐指数
1
解决办法
3332
查看次数