Следите за тем, какая нить загружает URL - PullRequest
1 голос
/ 17 августа 2010

У меня есть приложение, которое загружает URL-адреса с использованием threadPool в разных потоках, но недавно я прочитал статью (http://www.codeproject.com/KB/IP/Crawler.aspx)), в которой говорится, что HttpWebRequest.GetResponse () работает только в одном потоке, а другие потоки в ожидании этой темы. Сначала я хочу узнать, правда ли это? как я могу отслеживать, какая из моих тем действительно загружается с ее статусом?

Ответы [ 2 ]

1 голос
/ 17 августа 2010

Да, GetResponse - это блокирующий вызов (проверьте MSDN), который может вернуться только тогда, когда сервер ответит или истечет время ожидания запроса.После этого просто проверьте код состояния и используйте GetResponseStream, чтобы начать загрузку возвращаемого содержимого.Как это:

HttpWebResponse response = (HttpWebResponse)request.GetResponse();
if (response.StatusCode == 200)
{
    Stream content = response.GetResponseStream();
    // Read the content and report the downloading progress...
    ...
}
1 голос
/ 17 августа 2010

Я сомневаюсь, что HttpWebRequest.GetResponse заблокирует другие потоки - но вы можете легко это проверить, используя такие инструменты, как Fiddler .Вы можете запустить Fiddler и запустить вашу программу.Запрос появится в Fiddler, как только ваша программа сделает это, и вы сможете быстро определить, являются ли они одновременными или по одному.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...