在 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 解码? (右击并在新标签页中打开查看完整尺寸)