問題が発生し、それを処理する最善の方法を探しています。Parallel.ForEach ループで HttpWebRequest を使用しています (コードは以下にあります)。20 台以上のマシンとさまざまな種類の接続でプログラムをテストしましたが、今まで問題なく動作していました。
今日、私の ADSL モデムが故障し、ISP によって新しいモデムに交換されました。プログラムを実行すると、生成されたスレッドが 35 ~ 40 になるとすぐにタイムアウトになります。その時点で、ブラウザーに Web サイトを読み込もうとしても、タイムアウトになります。
私の推測では、モデムが同時接続を処理できないということです。問題は、これが起こらないようにするにはどうすればよいかということです。もちろん、同時接続数を制限することはできますが、これを処理するためのより良い方法があるはずですか?
どんな助けでも大歓迎です。
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();