Estoy intentando utilizar el Caching Application Block para almacenar en caché algunas imágenes (estas imágenes tardan mucho tiempo en procesarse)no pueden tener acceso cerrado Corriente
BitmapSource bitmapSource; ///some bitmap source already created
_cache /// Caching Application Block
String someId; //id for this image, used as the key for the cache
using (var stream = new MemoryStream())
{
PngBitmapEncoder encoder = new PngBitmapEncoder();
encoder.Interlace = PngInterlaceOption.On;
encoder.Frames.Add(BitmapFrame.Create(bitmapSource));
encoder.Save(stream);
_cache.Add(someId, stream);
}
y luego cargarlos usando:
imStream = (Stream)_cache.GetData(someId));
if (imStream != null)
{
PngBitmapDecoder decoder = new PngBitmapDecoder(imStream, BitmapCreateOptions.PreservePixelFormat, BitmapCacheOption.Default);
return decoder.Frames[0]; //return the bitmap source
}
Pero durante la carga, obtengo la siguiente excepción en esa línea "nuevo PngBitmapDecoder":
"No se puede acceder a una transmisión cerrada.
Entiendo que cerré la transmisión en el código anterior, pero ¿_cache.Add() no está haciendo una copia (mediante Serialización) antes de que se cierre? ¿Cuál es el proceso correcto de serialización de la transmisión?
¡Gracias!
gracias! ambas buenas respuestas, acabo de marcar la que vino primero :) me gusta la referencia de host/cubo. – moogs
@moogs - en realidad este vino primero (04:55:29 vs 04:46:05). – Alconja
que fue raro ... el "contestó xx minutos atrás" fue más alto para esta publicación anterior. hmm. – moogs