2009-02-23 121 views
8

異步獲取webrequest的最佳做法是什麼?異步Webrequest最佳實踐

我想從互聯網上下載一個頁面(無所謂) 並儘量避免阻塞一個線程。

以前我相信只要使用'BeginGetResponse'和'EndGetResponse'對就足夠了。但仔細觀察後我也看到有使用「BeginGetRequestStream」

[更新]的選項 GetRequestStream用於POST操作

然後添加到困惑,我應該使用流。 BeginRead和EndRead?

[更新]這個article表明,它是更好的異步使用Stream.BeginRead

什麼亂七八糟的處理HttpResponse.GetResponseStream!

有人能指出我正確的方向嗎?

什麼是最佳實踐?

回答

0
  1. 您使用開始/ EndGetResponse到asynchonously等待HTTP響應。如果您正在執行POST並需要異步發送大量數據,請使用Begin/EndGetRequestStream。

  2. 這不是異步通信的唯一方法 - 您可以查看同步版本以獲取更多信息。

  3. 我不知道你爲什麼要對請求流進行讀取 - 很可能你會寫信給它,並從響應流中讀取數據。

最後,Jeffrey Richter's blog大約有一些HttpWebRequest和流的細微之處的文章。

+0

是的,我認爲我與'BeginGetRequestStream' – 2009-02-23 04:26:31

5

你可以這一切你自己的代碼,或者你可以只使用Web客戶端,其做了很多關於你繁重的工作中。例如,要將文件下載爲字符串,您可以調用DownloadStringAsync(),最終將觸發OnDowloadStringCompleted事件。如果該文件是二進制文件,則可以嘗試使用DownloadDataAsync()。