Хранение фотографий в изолированном хранилище и чтение нескольких фотографий без использования памяти - PullRequest
0 голосов
/ 08 мая 2011

Я храню фотографии пользователей в изолированном хранилище и отображаю их в списке. Я использовал следующий код для извлечения изображения из изолированного хранилища

        BitmapImage bi = new BitmapImage(); 
        var isoFile = IsolatedStorageFile.GetUserStoreForApplication(); 
        if (isoFile.FileExists(imageFileName)) 
        {
            using (var imageStream = isoFile.OpenFile( 
                imageFileName, 
                FileMode.Open, FileAccess.Read)) 
        {
        //imageSource = PictureDecoder.DecodeJpeg(imageStream); 
        bi.SetSource(imageStream); 
    }
}
isoFile.Dispose();
//return imageSource; 
return bi; 

Сохранено 100 изображений. Каждый раз, когда изображения загружаются, потребление памяти продолжает увеличиваться, а затем не хватает памяти. Есть ли лучший способ получить доступ к изображениям с меньшим потреблением памяти. Я использовал GC.Collect() даже в конце загрузки. Это просто не работает.

Есть ли лучший способ создания и чтения изображений из изолированного хранилища?

Я позволил своим пользователям сохранять фотографии в изолированном хранилище. Является ли изолированное хранилище лучшим вариантом в моем случае?

1 Ответ

0 голосов
/ 09 мая 2011

Stefan Wick предлагает несколько отличных советов по работе с изображениями, в том числе о том, как избежать чрезмерного потребления памяти, в своем блоге по адресу http://blogs.msdn.com/b/swick/archive/2011/04/07/image-tips-for-windows-phone-7.aspx

Вам просто нужно принудительно установить для Image и внутреннего BitmapImage значение nullосвободить память, когда вы закончите с изображением.

BitmapImage bitmapImage = image.Source as BitmapImage;
bitmapImage.UriSource = null;
image.Source = null;
...