我有一個應用程序在不同線程下使用threadPool下載url,但最近我讀過一篇文章(http://www.codeproject.com/KB/IP/Crawler.aspx),它說HttpWebRequest.GetResponse()只能在一個線程中工作,另一個線程正在等待該線程。首先我想知道這是真的嗎?我如何監視我的線程中的哪一個實際上正在下載其狀態?監視哪個線程正在下載url
1
A
回答
1
我懷疑HttpWebRequest.GetResponse會阻止其他線程 - 但您可以使用諸如Fiddler之類的工具輕鬆驗證。您可以啓動提琴手並運行您的程序。一旦程序生成,該請求就會顯示在Fiddler中,您可以快速確定它們是同時還是一個接一個。
1
是的,GetResponse是一個阻塞呼叫(檢查MSDN),它只能在服務器應答或發生請求超時時返回。之後,只需檢查狀態碼並使用GetResponseStream開始下載返回的內容即可。就像這樣:
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
if (response.StatusCode == 200)
{
Stream content = response.GetResponseStream();
// Read the content and report the downloading progress...
...
}
+0
我不認爲Ehsan擔心如果GetResponse阻止當前線程,他擔心它會阻止其他線程上的GetResponse調用,導致並行下載無法進行。 – VinayC 2010-08-18 05:17:14
相關問題
- 1. 監視線程
- 2. 在JVM中監視線程
- 3. 線程監視C#
- 4. .net線程監視
- 5. 監視.NET線程
- 6. 瞭解哪個URL正在加載Blackberry
- 7. 中止,導航離開後監視下載,線程問題?
- 8. 確定哪個線程擁有監視器
- 9. 如何查看哪個監視器是等待的線程?
- 10. 監視BufferedInputStream下載進度
- 11. 哪個視圖正在加載TabControl
- 12. 下載遠程jar文件並監視下載進度
- 13. Java線程監視其他線程
- 14. boost :: asio,線程池和線程監視
- 15. 監視多個線程的性能
- 16. 使用java監視線程
- 17. 監視線程創建
- 18. 線程等待監視器
- 19. 使用線程池下載manager/url fetcher?
- 20. 監視哪個進程在FreeBSD/Linux下修改了一個文件
- 21. 哪個線程正在調用該行?
- 22. Apache負載監視 - 哪個站點創建過載?
- 23. 正在下載離線HelpContentSetup.msha
- 24. 德爾福。如何監視IE下載的URL?
- 25. 在Windows服務中監視線程
- 26. 在Python中監視線程同步
- 27. 監控文件,以查找哪個線程正在修改文件
- 28. 如何從監視器中斷另一個線程線程
- 29. 如何從另一個線程監視C#線程
- 30. Python的線程:監視線程和線程完成
是在instcode回答您的評論正是我需要知道,我跑提琴手,但我怎麼能肯定有關,原因提琴手不顯示該請求的情況下運行時間 – Ehsan 2010-08-18 09:12:47
我相信您的下載至少需要幾秒鐘 - 因此您應該在提琴手中看到多個同時請求,證明並行請求是可能的。在Fiddler中,統計信息選項卡會告訴您請求的開始時間和結束時間,而時間線選項卡可以顯示多個請求的聯合時間線(由fiddler調用的會話) - 選擇多個下載請求並查看時間線選項卡。 – VinayC 2010-08-18 09:23:34