.Net MemoryStreamオブジェクトインスタンスの場合、使用後に明示的に閉じる必要がありますか?またはそれを閉じる必要はありませんか?ベストプラクティスはどれですか?.Net MemoryStream close issue
私はVSTS2008 + .NET 3.5 + C#を使用しています。
.Net MemoryStreamオブジェクトインスタンスの場合、使用後に明示的に閉じる必要がありますか?またはそれを閉じる必要はありませんか?ベストプラクティスはどれですか?.Net MemoryStream close issue
私はVSTS2008 + .NET 3.5 + C#を使用しています。
完了したら、終了する必要があります。ベストプラクティスは、try-catch-finallyブロックのfinallyセクションでストリームを閉じることです。あなたはここでより多くの情報を得ることができます。
http://msdn.microsoft.com/en-us/library/system.io.memorystream.aspx
いっそ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を使用し、そして最後に一度にディスク上のすべてを置きます。 (私は、あなたが望むなら、この例をここに変更することもできます)
"最後に別のストリームに書き込んでください" - あなたに私にサンプルを教えてもらえますか?あなたは「最後に別のストリームに」とはどういう意味ですか? – George2
なぜメモリストリームをフラッシュするのですか?このメソッドのコメントは次のとおりです。 "アクションを実行しないようにフラッシュをオーバーライドします。" –
私は、 'StreamWriter'の周りに' MemoryStream'を使用してコードをコピーしたと思います。 'StreamWriter'インスタンスをフラッシュして、そこに書き込まれたすべてのテキストが' MemoryStream'の内側にあることを確認してから、アレイ。 私は最初にフラッシュしないことを思い出し、予想されるすべてのデータを含んでいないファイルがあります。 –
非常に良い答え!ありがとう! – George2