Como discussed before, cuando un BinaryReader o BinaryWriter se cierra, su Stream subyacente se cierra también (aargh). Considere esta situación: una rutina R
se pasa un MemoryStream, digamos M
; Me gustaría escribir algunas cosas en M
y luego pasarlo a otra rutina para más procesamiento (no necesariamente escribir). Para mayor comodidad, me gustaría envolver M
en un BinaryWriter para hacer mi escritura. Después de escribir, he terminado con el BinaryWriter pero no con M
.¿Cómo "bifurco" un Stream en .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
}
Pero, no puedo disponer de la BinaryStream sin cerrar M
.
P: ¿Hay alguna manera de hacer algo de lo siguiente?
- extraer el byte subyacente [] de una MemoryStream,
- clon de una secuencia
- reabrir una corriente después de que se ha cerrado
No sé C#, pero en Java, simplemente abandonarías sin cerrar el BinaryWriter. ¿No usa {...} construir fuerza de cierre? ¡Entonces no uses esa construcción! –
P.S. Pero debes asegurarte de limpiar el BinaryWriter antes de abandonarlo. –