Отслеживать, какой поток загружает URL

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

1
задан Ehsan 17 August 2010 в 10:00
поделиться

2 ответа

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

1
ответ дан 2 September 2019 в 22:07
поделиться

Да, 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
ответ дан 2 September 2019 в 22:07
поделиться
Другие вопросы по тегам:

Похожие вопросы: