UWP KnownFolder 数据缓存

UWP KnownFolder data caching

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

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

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

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

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

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 发生变化,它就会触发该事件。它不知道对哪些文件进行了更改,但您可以编写代码来每次检查。有关详细信息,请参阅 here

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

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