我有以下代码。
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.Proxy = WebRequest.DefaultWebProxy; //or skipped
request.UserAgent = "Mozilla";
request.Referer = "http://google.com;
request.Accept = "image/png,image/*;q=0.8,*/*;q=0.5";
request.Host = "google.com";
// request.KeepAlive = false;
request.Headers.Add(HttpRequestHeader.AcceptLanguage, "en-US,en;q=0.5");
request.Headers.Add(HttpRequestHeader.AcceptEncoding, "gzip,deflate");
request.CookieContainer = cookieContainer;
using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
{
using (Stream stream = response.GetResponseStream())
{
Bitmap bmp = new Bitmap(Image.FromStream(stream));
return bmp;
}
}
它在多个线程中执行。每个线程使用上面的代码运行单独的循环我运行简单的性能测试(秒表)并观察到3-5分钟后 Image.FromStream(流)的时间比开始时多10倍。
我尝试在请求对象中设置KeepAlive和Proxy设置。还在app.config中添加了以下内容:
<system.net>
<connectionManagement>
<add address="*" maxconnection="5000"/>
</connectionManagement>
<defaultProxy enabled="false">
<proxy/>
<bypasslist/>
<module/>
</defaultProxy>
</system.net>
不幸的是,随着时间的推移,我的性能仍会下降我的性能工具(dotTrace)表明,很大一部分时间是花费Image.FromStream(stream)
任何想法都在哪里?