Как discussed before, когда BinaryReader или BinaryWriter закрывается, его основной поток также закрывается (aargh). Рассмотрим эту ситуацию: подпрограмма R
передается MemoryStream, скажем M
; Я хотел бы написать некоторые вещи до M
, а затем передать их другой процедуре для большей обработки (не обязательно писать). Для удобства, я хотел бы обернуть M
в BinaryWriter, чтобы написать свое письмо. После написания я закончил с BinaryWriter, но не с M
.Как «развить» поток в .NET?
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,
- клона поток
- повторно открыть поток после того, как он был закрыт
Я не знаю C#, но на Java вы просто просто отказываетесь, не закрывая BinaryWriter. Не закрывается ли использование конструкции {...}? Тогда не используйте эту конструкцию! –
P.S. Но вам нужно убедиться, что вы очистите BinaryWriter, прежде чем покинуть его. –