2011-11-10 4 views
1

私は、Webサーバーからファイルをダウンロードし、そのファイルを返す必要があるメソッドを持つラッパークラスを持っています。 HttpWebResponseオブジェクトは、本文のストリームを返します。ストリームを返すのは安全ですか?

ストリームを返す必要がありますか?または、それをバイト配列に変換して代わりに返す必要がありますか?

このラッパークラスはいくつかの場所で使用できるので、ファイルを返すには堅牢な方法が必要です。いずれの場合も、ファイルはアダプタクラスから受け取った後にどこかに保存されます。

答えて

3

短い回答:はい、問題ありません。

長い答え:はい、それは完全にStreamを返すことは安全です。 .NETではガベージコレクタがスマートで、Streamが処分されているかどうか心配する必要はありません。つまり、を—と呼ぶ場合を除き、再使用を計画している場合は避けてください。

+0

大変です。私はストリームで非常に頻繁に対処しないといくつかの安心したいと思っていたと私はいくつかの凶悪な偽のパースを作っていたと確信していませんでした。 – Fellmeister

2

返品Streamオブジェクトは完全に有効です。ストリームを返すメソッドを呼び出すコードの責任は、それを処分することです。問題は、あなたのラッパーメソッドに応答オブジェクトを処分することもストリームを処分するのですか?その場合は、内容をMemoryStreamにコピーするか、一時ファイルを作成してオープンストリームを返します。

+0

良い点。私は遊びをして、何が起こるか見る。 – Fellmeister

関連する問題