KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
I'm trying to use the Caching Application Block to cache some images (these images take a long time to render) 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); } And then load them using: 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 } But during the load, i get the following exception at that "new PngBitmapDecoder" line: "Cannot access a closed Stream. I understand I closed the stream in the above code, but isn't _cache.Add() making a copy (via Serialization) before it exits? What's the correct process of serializing the stream? THanks!
Tags (comma-separated)
Save Edits
Cancel