UWP 已知文件夹数据缓存

touseefbsb

我正在尝试使用KnownFolders完成以下任务,即:我的UWP 应用中的VideoLibrary

  1. 更快的加载时间。(我需要从KnownFolders加载缩略图和文件名,如果库中有大量文件,这可能需要更多时间。是否有更快的方法来缓存和存储它们,可能在sqlite数据库中,并且在每次下一次运行时从数据库获取它们,可以更快吗?

  2. 与系统文件更改同步(如果在该特定库中添加或删除新文件,当应用程序运行时,如何通知应用程序)

  3. 基本上我希望应用程序在打开时更快地加载库数据,那么推荐的方法是什么?我应该为应用程序使用后台任务吗?但是当应用程序没有运行时将数据保存在内存中可能不是一个好的解决方案,或者是吗?或者我可以在应用程序启动后立即开始在App.xaml.cs中提取数据的过程(在导航到库页面之前)这会提高性能吗?

  4. 基本上:我在这里寻找一些建议和讨论,因为在这里我的问题可能没有严格的答案。预先感谢任何建议将不胜感激。我的主要 2 个目标是同步库与删除和添加物理文件夹中的文件,并提高应用程序中库的加载性能。(是的,我也在带有缩略图的网格视图中加载

肖恩·奥尼尔
StorageFileQueryResult fileQuery;

async void CreateWatchFolder(StorageFolder folder)
    {
        var options = new QueryOptions();
        options.FolderDepth = FolderDepth.Deep;
        fileQuery = folder.CreateFileQueryWithOptions(options);
        _fileQuery.ContentsChanged += OnContentsChanged;
        var files = await _fileQuery.GetFilesAsync();
    }

    async void OnContentsChanged(IStorageQueryResultBase sender, object args)
    {
        // Do stuff, e.g. check for changes
    }

对于您问题的#2,这将为您提供一个监视文件夹。每当该 StorageFolder 发生更改时,它都会触发该事件。它不知道对哪些文件进行了更改,但您可以编写代码进行每次检查。请参阅此处了解更多详情。

关于#1,真的很难说它值得测试。我个人在使用 UWP 使用 Sqlite 和 EF 时表现不佳,但我不是这方面的专家。

问题 #3,您可能会考虑将缩略图缓存到 app-data 文件夹之一。LocalCache 将是显而易见的选择,但实际上,如果您只使用 Local,那么您可以在您的 UI 中为图像源绑定 URI 路径。这不适用于我上次检查的 LocalCache 中的图像(大约 3 月左右),但它适用于 Local。这比将文件作为 StorageFile 加载然后用它创建位图要快得多。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章