Kann nicht auf geschlossenen Stream zugreifen
Ich versuche das zu benutzenAnwendungsblock zwischenspeichern um einige Bilder zwischenzuspeichern (das Rendern dieser Bilder dauert sehr lange)
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);
}
Und laden Sie sie dann mit:
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
}
Aber während des Ladens erhalte ich die folgende Ausnahme bei dieser "neuen PngBitmapDecoder" -Zeile:
"Kann nicht auf einen geschlossenen Stream zugreifen.
Ich verstehe, dass ich den Stream im obigen Code geschlossen habe, aber macht _cache.Add () keine Kopie (über Serialization), bevor er beendet wird? Wie wird der Stream korrekt serialisiert?
Vielen Dank!