我将用户的照片存储在隔离存储中并将其显示在列表框中。我使用以下代码从隔离存储中检索图像
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()
。它根本不起作用。
是否有更好的方法从隔离存储中读取和读取图像?
我让我的用户在隔离存储上保存照片。隔离存储在我的情况下是更好的选择吗?
答案 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;