2010-08-17 27 views

回答

1

我懷疑HttpWebRequest.GetResponse會阻止其他線程 - 但您可以使用諸如Fiddler之類的工具輕鬆驗證。您可以啓動提琴手並運行您的程序。一旦程序生成,該請求就會顯示在Fiddler中,您可以快速確定它們是同時還是一個接一個。

+0

是在instcode回答您的評論正是我需要知道,我跑提琴手,但我怎麼能肯定有關,原因提琴手不顯示該請求的情況下運行時間 – Ehsan 2010-08-18 09:12:47

+0

我相信您的下載至少需要幾秒鐘 - 因此您應該在提琴手中看到多個同時請求,證明並行請求是可能的。在Fiddler中,統計信息選項卡會告訴您請求的開始時間和結束時間,而時間線選項卡可以顯示多個請求的聯合時間線(由fiddler調用的會話) - 選擇多個下載請求並查看時間線選項卡。 – VinayC 2010-08-18 09:23:34

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