0

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

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

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

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

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

4

1 回答 1

1
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 然后用它创建位图要快得多。

于 2017-06-17T11:33:57.983 回答