У меня есть приложение WPF, которое обрабатывает много URL-адресов (тысяч), каждый из которых отправляет в свой собственный поток, выполняет некоторую обработку и сохраняет результат в базе данных.
URL-адреса могут быть любыми, но некоторые из них выглядят большими по размеру страницами, что, похоже, значительно увеличивает использование памяти и ухудшает производительность. Я установил тайм-аут для веб-запроса, поэтому, если он занял больше 20 секунд, он не беспокоится об этом URL, но, похоже, не имеет большого значения.
Вот код раздела:
HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(urlAddress.Address);
req.Timeout = 20000;
req.ReadWriteTimeout = 20000;
req.Method = "GET";
req.AutomaticDecompression = DecompressionMethods.Deflate | DecompressionMethods.GZip;
using (StreamReader reader = new StreamReader(req.GetResponse().GetResponseStream()))
{
pageSource = reader.ReadToEnd();
req = null;
}
Также кажется, что он останавливает / наращивает память на устройстве чтения. ReadToEnd ();
Я бы подумал, что отрезание в 20 секунд поможет, есть ли лучший метод? Я предполагаю, что использование асинхронного веб-метода не дает больших преимуществ, так как каждая загрузка URL в любом случае происходит в отдельном потоке.
Спасибо