Как и обсуждалось ранее , когда BinaryReader или BinaryWriter закрываются, базовый поток также закрывается (аааа). Рассмотрим следующую ситуацию: процедуре R
передается MemoryStream, скажем, M
; Я хотел бы написать кое-что в M
, а затем передать его в другую подпрограмму для дополнительной обработки (не обязательно записи). Для удобства я бы хотел обернуть M
в BinaryWriter, чтобы писать. После написания я закончил с 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
.
В: Есть ли способ сделать что-либо из следующего?
- извлечь базовый байт [] из MemoryStream,
- клонировать поток
- вновь открыть поток после его закрытия