前に説明したように、BinaryReader または BinaryWriter が閉じられると、その基になる Stream も閉じられます (aargh)。この状況を考えてみましょう: ルーチンRに MemoryStream が渡されますM。いくつかのものを書き込んでからM、それを別のルーチンに渡してさらに処理したいと思います(必ずしも書き込みではありません)。便宜上、MBinaryWriter でラップして書き込みを行いたいと思います。書いた後、BinaryWriter は完了しましたが、M.
void R(MemoryStream M)
{
using (B = new BinaryWriter(M))
{
// write some stuff using B
}
S(M); // now pass M to another routine for further processing
}
しかし、BinaryStream を閉じずに破棄することはできませんM。
Q: 次のいずれかを行う方法はありますか?
- 基になる byte[] を MemoryStream から抽出し、
- ストリームのクローン
- 閉じたストリームを再び開く