【发布时间】:2013-09-06 23:23:32
【问题描述】:
在 Windows Store App 中创建图像时,如何控制从磁盘读取数据的时间?
在 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 的图像放到屏幕上需要大约 330 毫秒。其中,170ms 用于文件 IO(包括 37ms 用于杀毒检查文件),160ms 用于 WIC 解码。
任何想法如何控制文件 IO 何时发生或如何触发 WIC 解码? (右击并在新标签中打开以查看完整尺寸)
【问题讨论】:
-
您的问题解决了吗?请分享你的答案。
标签: image windows-8 io windows-runtime windows-store-apps