Pensé que era una buena práctica, al acceder a los recursos de ensamblaje integrados usando el método Assembly.GetManifestResourceStream
, cerrar el Stream
devuelto después de terminar con él. Sin embargo, yo sólo vi algo en el siguiente artículo:¿Debo cerrar las cadenas devueltas por Assembly.GetManifestResourceStream?
http://msdn.microsoft.com/en-us/library/ms950960.aspx
// Get the stream that holds the resource
// NOTE1: Make sure not to close this stream!
// NOTE2: Also be very careful to match the case
// on the resource name itself
Stream stream =
assem.GetManifestResourceStream("Azul.jpg");
// Load the bitmap from the stream
this.BackgroundImage = new Bitmap(stream);
El comentario aquí dice que la corriente debe no se cerrará, aunque el artículo no hace mención de por qué. Las búsquedas en Google no han proporcionado nada concluyente; algunas personas parecen cerrar esta secuencia, otras no y dicen que el recolector de basura se ocupará de ella.
¿Debo cerrar las corrientes devueltas por Assembly.GetManifestResourceStream
? ¿Hay alguna razón particular por la que no debería?
Sigue creando un mapa de bits a partir de él, pero ¿por qué todavía no lo cierra * después de * crear el mapa de bits? – Jez
El ejemplo está utilizando el mapa de bits como una imagen de fondo de un formulario de Windows, por lo que el mapa de bits (y el flujo subyacente) será necesario para toda la duración de la vida del formulario. Desafortunadamente, no es un muy buen ejemplo de cómo administrar adecuadamente los objetos IDisposables. –