如何控制何时将图像数据加载到Windows应用商店应用程序的内存中?

时间:2013-09-03 16:25:38

标签: image windows-8 io windows-runtime windows-store-apps

在Windows应用商店应用中创建图像时,如何控制何时从磁盘读取数据?

在WPF中,您可以使用BitmapCacheOptions控制何时从磁盘读取图像。 BitmapCacheOptions.OnDemand会推迟从磁盘读取数据,直到实际需要图像数据。这有一些缺点:

  • IO成本通常表现为UI延迟​​;
  • 如果使用流作为图像源,则无法关闭流;
  • 如果文件被用作图像源,则文件被锁定。

要解决该问题,您可以使用BitmapCacheOptions.OnLoad立即将图像读入内存。

如何控制何时将图像数据加载到Windows应用商店应用的内存中?

WPF代码看起来像这样:

var bitmapImage = new BitmapImage();
bitmapImage.BeginInit();
bitmapImage.CacheOption = BitmapCacheOption.OnLoad;
bitmapImage.UriSource = path;
bitmapImage.EndInit();
bitmapImage.Freeze();

修改 - 更多信息

WPA显示在屏幕上获得8.8mb的图像需要大约330ms。其中,170毫秒用于文件IO(包括37毫秒用于防病毒检查文件),160毫秒用于WIC解码。

如何控制文件IO何时发生或如何触发WIC解码? Right click and open in new tab to see full size (右键单击并在新选项卡中打开以查看完整大小)

1 个答案:

答案 0 :(得分:0)

对于Windows应用商店应用,我建议您查看AccessCache API - http://msdn.microsoft.com/en-us/library/windows/apps/windows.storage.accesscache.aspx

特别是StorageApplicationPermissions类。有了它,您可以添加要访问的各种存储项目。

请查看FilePickerSampl e(或FileAccessSample)应用,了解有关如何使用该应用的更多信息。