2010-10-20 10 views

Respuesta

19

No, no hay ninguna posibilidad de eso. Es seguro hacerlo: el MemoryStream guarda una fuerte referencia a la matriz de bytes.

Voy a ver si puedo encontrar ninguna documentación sobre garantías ...

EDIT: Una especie de ...

De MemoryStream.Close:

El buffer está disponible en una MemoryStream una vez que la secuencia se ha cerrado.

Es cierto que no garantiza por Dispose, pero eso ha documentado que llamar Stream.Close.

MemoryStream.Dispose(bool)podría ser reemplazado para liberar la matriz, pero no lo hace en mi experiencia, y sería un cambio radical en este momento.

+0

No encontré nada en los documentos, pero tenemos pruebas en Mono para esto y el código funciona en este caso. Por cierto, no es necesario llamar a ms.Close(). – Gonzalo

+0

Solo una nota: La documentación de .NET 4.0 para MemoryStream.Close (http://msdn.microsoft.com/en-us/library/system.io.stream.close%28v=vs.100%29.aspx) * no * contiene el mensaje "El búfer aún está disponible en un MemoryStream una vez que se ha cerrado la secuencia". declaración. Me hace preguntarme si terminaron cambiando el comportamiento. –

+0

@scottmarlowe: Esa es la documentación de Stream.Close. Parece que acaban de dejar de proporcionar "documentación sobresaliente" para MemoryStream.Close. Cambiar el comportamiento real habría roto una gran cantidad de código. –

Cuestiones relacionadas