Не удается получить доступ к закрытому потоку

Я пытаюсь использоватьБлок приложения кеширования кэшировать некоторые изображения (рендеринг этих изображений занимает много времени)

  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);
    }

И затем загрузите их, используя:

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
}

Но во время загрузки я получаю следующее исключение в этой строке "new PngBitmapDecoder":

"Невозможно получить доступ к закрытому потоку.

Я понимаю, что закрыл поток в приведенном выше коде, но разве _cache.Add () не создает копию (через сериализацию) до ее выхода? Какой правильный процесс сериализации потока?

Спасибо!