2009-08-25 6 views
1

.Net MemoryStreamオブジェクトインスタンスの場合、使用後に明示的に閉じる必要がありますか?またはそれを閉じる必要はありませんか?ベストプラクティスはどれですか?.Net MemoryStream close issue

私はVSTS2008 + .NET 3.5 + C#を使用しています。

答えて

9

いっそUsing

using (MemoryStream ms = /*get it using your favorite ctor*/) 
{ 
    // use it here 

    // and now flush and copy to a file stream (for example) 
    ws.Flush(); 
    byte[] buffer = ws.ToArray(); 
    using (Stream stream = new FileStream("fileName", FileMode.Create)) 
     stream.Write(buffer, 0, buffer.Length); 
} 

少しリマインダーを使用することです - あなたは「、最後に別のストリームにドンをすべてを書くことを計画している場合Flush()を忘れてください(そして、便座を上に置かないでください)。

私はメモリにテキストデータを書き込むために、MSの周りのStreamWriterを使用し、そして最後に一度にディスク上のすべてを置きます。 (私は、あなたが望むなら、この例をここに変更することもできます)

+0

"最後に別のストリームに書き込んでください" - あなたに私にサンプルを教えてもらえますか?あなたは「最後に別のストリームに」とはどういう意味ですか? – George2

+1

なぜメモリストリームをフラッシュするのですか?このメソッドのコメントは次のとおりです。 "アクションを実行しないようにフラッシュをオーバーライドします。" –

+0

私は、 'StreamWriter'の周りに' MemoryStream'を使用してコードをコピーしたと思います。 'StreamWriter'インスタンスをフラッシュして、そこに書き込まれたすべてのテキストが' MemoryStream'の内側にあることを確認してから、アレイ。 私は最初にフラッシュしないことを思い出し、予想されるすべてのデータを含んでいないファイルがあります。 –