質問

からの返信が来ています HttpWebRequest (修正バージョンを使用 Jeff Richter の CCR ラッパー)、次にダウンロードを続行するかどうかを決定するためにいくつかのヘッダーを検査します。場合によっては続行したくないかもしれないので、結果的に 応答.閉じる そして 要求.中止. 。発行する必要はありますか GetResponseStream 次にストリームを閉じるか、呼び出し時にこれが暗黙的に行われますか 応答.閉じる?

GetResponse を発行した後、 ドキュメントの状態:

Close メソッドを呼び出してストリームを閉じ、接続を解放する必要があります。そうしないと、アプリケーションの接続が不足する可能性があります。

つまり、応答を取得したら、ストリームを取得して閉じることが義務付けられているということでしょうか?

ハングしたダウンロードが最終的にシステムを圧迫するという、かなり奇妙な問題がいくつか発生しています。これはリソース リークの最も有力な候補のように思えますが、他にこの問題を経験した人はいるでしょうか。

余談として:同じストリームであると仮定して、GetResponseStream を 2 回実行しても安全ですか?

役に立ちましたか?

解決

実際、webResponse.Close()の呼び出しが応答ストリームを閉じます。

応答がIDisposableをされ、私はあなたを使用して文をアドバイスます。

他のヒント

電話をかける HttpWebResponse.Close 暗黙的に応答ストリームを閉じます。

ドキュメントから:

Close メソッドは、応答ストリームを閉じ、他の要求で再利用できるようにリソースへの接続を解放します。

Stream.Close メソッドまたは HttpWebResponse.Close メソッドを呼び出してストリームを閉じ、再利用のために接続を解放する必要があります。Stream.Close と HttpWebResponse.Close の両方を呼び出す必要はありませんが、呼び出してもエラーは発生しません。ストリームを閉じないと、アプリケーションの接続が不足する可能性があります。

二重の GetResponseStream の質問については、 ドキュメンテーション 明示的には言及していませんが、何度呼び出しても、常に同じストリーム オブジェクトが返されます。

WCFの接続のような何かをする

//Done with the service, let's close it.
try
{
   if (client.State != System.ServiceModel.CommunicationState.Faulted)
   {
      client.Close();
   }
}
catch (Exception ex)
{
   client.Abort();
}
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top