8

Web リクエストを非同期で取得するためのベスト プラクティスは何ですか?

インターネットからページをダウンロードし (何でも構いません)、スレッドをできるだけブロックしないようにしたいです。

以前は、「BeginGetResponse」と「EndGetResponse」のペアを使用するだけで十分だと考えていました。しかし、詳しく調べると、「BeginGetRequestStream」を使用するオプションがあることもわかります

[更新] GetRequestStream は POST 操作に使用されます

さらに混乱を招くのは、stream.BeginRead と EndRead を使用する必要があるかどうかです。

[更新]この記事では、Stream.BeginRead を使用して HttpResponse.GetResponseStream を非同期的に処理する方がよいことを示唆しています。

なんて混乱!

誰かが私を正しい方向に向けることができますか?

ベストプラクティスとは?

4

3 に答える 3

5

これをすべて自分でコーディングすることも、面倒な作業の多くを行う WebClient を使用することもできます。たとえば、ファイルを文字列としてダウンロードするには、最終的に OnDowloadStringCompleted イベントをトリガーする DownloadStringAsync() を呼び出します。ファイルがバイナリの場合は、代わりに DownloadDataAsync() を使用してみてください。

于 2009-02-24T08:22:06.557 に答える
0

新しいスレッドでWebリクエストを実行することを検討しましたか?

http://msdn.microsoft.com/en-us/library/ms173178.aspx

于 2009-02-24T07:06:13.383 に答える
0
  1. Begin/EndGetResponse を使用して、非同期で HTTP 応答を待ちます。POST を実行していて、非同期で大量のデータを送信する必要がある場合は、Begin/EndGetRequestStream を使用します。

  2. これは非同期通信に固有のものではありません。同期バージョンを調べて追加情報を取得できます。

  3. リクエスト ストリームで Read を実行する理由がわかりません。ほとんどの場合、リクエスト ストリームに書き込み、レスポンス ストリームから読み取ります。

最後に、Jeffrey Richter のブログに、HttpWebRequest とストリームの微妙な点に関する記事があります。

于 2009-02-23T04:17:21.380 に答える