gpt4 book ai didi

c# - 比 StorageFolder.GetFilesAsync() 更快的获取文件夹文件的方法?

转载 作者:太空狗 更新时间:2023-10-29 20:36:16 28 4
gpt4 key购买 nike

StorageFolder.GetFilesAsync非常慢:

  • 约 3500 个文件的文件夹需要 7 秒

回到 Windows Phone 8.0 Silverlight,我能够更快地获取 CameraRoll 的内容(通过 MediaLibrary ):

  • <1 秒用于相同数量的文件

是否有可能加快 GetFilesAsync 的速度,或者是否有其他方法可以获取文件夹的文件?

我需要照片文件来立即提取信息,例如 GeotagDateTaken。您可以在我的应用程序中看到他们加载 Silverlight 的速度有多快 GeoPhoto - 我现在正在尝试将其移植到 UWP。我已经实现了缓存(使用图片路径映射地理标记和 DateTaken),因此我只需要图片路径即可启动后续应用程序。尚未缓存的照片可以稍后显示(在长时间的 GetFilesAsync 调用之后),但重要的是为用户提供一些他可以在启动应用程序后立即与之交互的东西。

最佳答案

我想知道你是否读过这个:https://www.suchan.cz/2014/07/file-io-best-practices-in-windows-and-phone-apps-part-1-available-apis-and-file-exists-checking/

Windows 8.1 - finally on Windows 8.1 the fastest method is the new StorageFolder.TryGetItemAsync method, but only by a slim margin when comparing to other methods. The main benefit here is definitely the simple code required without any Exception catching if the file does not exists. The results for sync methods are similar to Windows 8 platform, if original synchronization context is not required, the sync methods are a better choice.

In short, for checking if target file exists, on WP8 and WP8.1 Silverlight the fastest method is File.Exists, on Windows 8 and WP8.1 XAML you should use StorageFolder.GetFileAsync, and on Windows 8.1 use the new method StorageFolder.TryGetItemAsync. Do NOT use the iteration of StorageFiles returned from StorageFolder.GetFilesAsync on any platform, it is terribly slow. Also if you don't need co continue on the original thread, you can use the synchronous alternatives on WP8.1 XAML, Windows 8 and Windows 8.1 platforms.

或者类似的东西?

StorageFolder.GetItemsAsync(UInt32, UInt32) 

获取前 X 个文件以向用户提供您想要的即时反馈。之后加载其余部分。

https://msdn.microsoft.com/en-us/library/windows/apps/br227287.aspx

关于c# - 比 StorageFolder.GetFilesAsync() 更快的获取文件夹文件的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32668822/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com