StorageFolder.GetFilesAsync慢得令人难以置信:
回到Windows Phone8.0 Silverlight中,我可以更快地(通过MediaLibrary)获取CameraRoll的内容:
是否有可能加快
我需要照片文件立即提取信息,如地理标签或日期标记。你可以在我的应用GeoPhoto中看到他们加载Silverlight的速度--我现在正尝试将其移植到UWP。我已经实现了缓存(用图片路径映射geotag和DateTaken),所以我只需要在随后的应用程序启动时使用图片路径。尚未缓存的照片可以稍后显示(在长的
不知道您是否读过以下内容:https://www.suchan.cz/2014/07/file-io-best-practices-in-windows-and-phone-apps-part-1-available-apis-and-file-exists-checking/
Windows8.1-最后,在Windows8.1上,最快的方法是新的StorageFolder.TrygetItemAsync方法,但与其他方法相比,速度很小。这里的主要好处肯定是所需的简单代码,如果文件不存在,则不会捕获任何异常。同步方法的结果与Windows8平台相似,如果不需要原始同步上下文,则同步方法是更好的选择。
简而言之,要检查目标文件是否存在,在WP8和WP8.1 Silverlight上,最快的方法是file.exists,在Windows 8和WP8.1 XAML上,您应该使用StorageFolder.GetFileSync,而在Windows 8.1上,则使用新方法StorageFolder.TryGetItemAsync。不要在任何平台上使用从StorageFolder.GetFilesAsync返回的StorageFiles的迭代,它非常慢。另外,如果您不需要在原始线程上执行co continue,您可以在WP8.1XAML,Windows8和Windows8.1平台上使用同步替代方案。
或者像这样的?
StorageFolder.GetItemsAsync(UInt32, UInt32)
获取第一个X个文件,以便向用户提供所需的即时反馈。然后再加载剩下的。
https://msdn.microsoft.com/en-us/library/windows/apps/br227287.aspx
编辑:因为我原来的回答似乎没有什么帮助,我希望这一个能解决你的问题。
我创建了一个包含4000个文件的文件夹,仅用于测试,并使用秒表来计时。br>只需读取文件夹中的每一项就可以:
以不同的顺序多次执行
我理解,这只是给你的文件名作为字符串,但取决于你用来阅读图片的库,这可能仍然对你有帮助。
原始答案:br>当您以字符串形式获得路径时(例如从
它还允许您传递一个searchPattern,它允许您使用*和?而且它是同步工作的,但是通过这种方法检索文件非常快。