async和await图像加载占用Windows Phone 8.1中的更多内存

时间:2014-09-16 13:41:52

标签: windows-runtime windows-phone-8.1 winrt-async

我在窗口手机8.1的图片库上工作,用户可以像图书一样逐个查看图片。您可以在此处转动图像并查看其他图像。

现在,这个图库应用程序消耗了大量内存,并且在使用应用程序一段时间后我出现了内存异常。

我使用下面的代码将图片加载到usercontrol中。

StorageFile f1 = await StorageFile.GetFileFromApplicationUriAsync(new Uri("ms-appx://" + Physical path of application for getting image);
using (IRandomAccessStream stream1 = await f1.OpenAsync(FileAccessMode.Read))
{
     bitmapImage1 = new BitmapImage();
     await bitmapImage1.SetSourceAsync(stream1);
     nextimg = bitmapImage1;
     stream1.Dispose();
}

有人可以帮助指导内存消耗吗?

1 个答案:

答案 0 :(得分:1)

首先,似乎有人已经问过类似的问题:Memory not being relieved when setting BitmapImage to null

但是,我仍然搜索了一下,在这里找到了对问题的全面调查:Memory leak with BitmapImage。虽然值得一读,但本文中提供了一些解决方案。

  1. BitmapImage的来源设为空流,或

  2. BitmapImage.UriSource设为空,或

  3. 打开图片时(BitmapImage.ImageOpened事件被提出),取消订阅BitmapImage.ImageOpenedBitmapImage.ImageFailed个活动。

  4. 顺便问一下,你为什么打电话给stream1.Dispose()using语句暗示此调用。