将照片存储在独立存储中并读取多张照片而无需占用内存

时间:2011-05-08 14:40:14

标签: windows-phone-7 isolatedstorage

我将用户的照片存储在隔离存储中并将其显示在列表框中。我使用以下代码从隔离存储中检索图像

        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 :(得分:0)

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;