我遇到了一个问题,我正在寻找处理它的最佳方法。我在 Parallel.ForEach 循环中使用 HttpWebRequest(代码如下)。我已经在两打机器和许多不同类型的连接上测试了该程序,并且到目前为止它运行良好。
今天,我的 ADSL 调制解调器死了,被 ISP 换成了一个新的——现在,当我运行程序时,一旦产生的线程达到 35-40,我得到的只是超时;那时,即使我尝试在浏览器中加载网站,它们也会超时。
我的猜测是调制解调器无法处理并发连接 - 问题是如何防止这种情况发生?当然,我可以限制并发连接的数量,但是应该有更好的方法来处理这个问题吗?
任何帮助是极大的赞赏。
string pageContent;
HttpWebRequest myReq = (HttpWebRequest)WebRequest.Create(webSiteUrl);
myReq.UserAgent = "Mozilla/5.0 (Windows; U; MSIE 9.0; Windows NT 9.0; en-US)";
myReq.Method = "GET";
myReq.Accept = "text/html";
myReq.Timeout = webRequestTimeout; //set to generous 90 seconds
myReq.ReadWriteTimeout = webRequestTimeout; //set to 90 seconds
HttpWebResponse myres = (HttpWebResponse)myReq.GetResponse();
using (StreamReader sr = new StreamReader(myres.GetResponseStream(), Encoding.Default))
{
pageContent = sr.ReadToEnd();
}
myres.Close();