Smartthreadpool を使用して次の関数をキューに入れています。しばらくするとすべてがスムーズに実行され、CPU は 98 ~ 99% まで上昇します。
dotTrace でスナップショットを撮ったところ、以下の関数がほとんどの CPU を使い果たしていることがわかりました。
public string websocketExtended(string URL, int socketTimeOut)
{
string _html = "";
HttpWebResponse _wResp;
try
{
HttpWebRequest _wReq;
System.Text.ASCIIEncoding _enc = new System.Text.ASCIIEncoding();
_wReq = (HttpWebRequest)WebRequest.Create(URL);
_wReq.UserAgent = "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)";
_wReq.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";
_wReq.Method = "GET";
_wReq.CookieContainer = cookieJarf;
_wReq.KeepAlive = false;
_wReq.Timeout = socketTimeOut;
_wReq.ReadWriteTimeout = socketTimeOut;
_wResp = (HttpWebResponse)_wReq.GetResponse();
using (StreamReader sr = new StreamReader(_wResp.GetResponseStream()))
{
_html = sr.ReadToEnd();
}
cookieJarf = _wReq.CookieContainer;
_wResp.Close();
}
catch (WebException wexc1)
{
if (wexc1.Status == WebExceptionStatus.ProtocolError)
{
return "";
}
}
return _html;
}