执行多个异步Http请求时,一个问题是许多开发人员都没注意到的。Http(RFC 2616)指出客户端应用程序到一个服务器的并发连接数不应超过2个。FCL的类中强制了这一规则,任何线程试图创建到一个服务器的额外连接,就会阻塞,直到现有的两个连接关闭为止。
设计你的应用程序时,要么保证在任何给定的时刻,到一个服务器的连接都不超过两个;要么就将 System.Net.ServicePointManager的静态DefaultConnectionLimit属性设为你应用程序需要的任务数字。
搞自:周靖译的 <<CLR via C#(第三版)>>。