8

メソッドを使用して埋め込みアセンブリ リソースにアクセスするときは、終了後Assembly.GetManifestResourceStreamに返されたものを閉じるのが良い方法だと考えていStreamました。ただ、次の記事で気になったことがあります。

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

// Get the stream that holds the resource
// NOTE1: Make sure not to close this stream!
// NOTE2: Also be very careful to match the case
//        on the resource name itself
Stream stream =
  assem.GetManifestResourceStream("Azul.jpg");

// Load the bitmap from the stream
this.BackgroundImage = new Bitmap(stream);

ここのコメントでは、ストリームを閉じてはいけないと述べていますが、記事ではその理由について言及していません。Google で検索しても決定的な結果は得られませんでした。このストリームを閉じているように見える人もいれば、そうではなく、ガベージコレクタが処理すると言う人もいます。

から返されたストリームを閉じる必要がありますAssembly.GetManifestResourceStreamか? してはいけない特別な理由はありますか?

4

1 に答える 1

4

Bitmapそのコメントは、そこからオブジェクトを作成し続けるため、閉じてほしくありません。一般に、使用が終わったらストリームを閉じる必要があります。そうしないと、アプリケーションでメモリ リークが発生する可能性があります。

于 2012-08-10T17:05:30.700 に答える