首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >UWP KnownFolder数据缓存

UWP KnownFolder数据缓存
EN

Stack Overflow用户
提问于 2017-06-17 11:05:17
回答 1查看 588关注 0票数 0

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

  1. 更快的加载时间。(我需要从KnownFolders加载缩略图和文件名,如果库中有大量的文件,这可能会花费更多的时间。是否有一种更快的方法来缓存和存储它们,也许是在sqlite数据库中,而在下一次运行时只需要从DB获取它们,这会更快吗?
  2. 与系统文件更改同步(如果在该特定库中添加或删除新文件,而应用程序正在运行时,如何通知应用程序)
  3. 基本上,我希望应用程序在打开时能更快地加载库数据,那么建议采用什么方法来实现呢?应用程序应该使用后台任务吗?但是,当应用程序不运行时,将数据保存在内存中可能不是一个好的解决方案,是吗?或者,我可以在应用程序一启动(导航到库页面之前)就开始在App.xaml.cs中提取数据的过程,这会提高性能吗?
  4. 基本上:我在这里寻找一些建议和讨论,因为在这里我的问题可能没有一个严格的答案。,谢谢,提前,如有任何建议,将不胜感激。我的两个主要目标是同步库与删除和添加文件在物理文件夹,并提高加载性能的库在应用程序。(是的,我正在将库加载到带有缩略图的网格视图中,也是如此。
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-06-17 11:33:57

代码语言:javascript
复制
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
    }

对于第二个问题,这将给你一个手表文件夹。任何时候,在这个StorageFolder中有一个变化,它都会触发事件。它不知道进行了哪些文件更改,但是每次都可以编写代码来检查。有关更多详细信息,请参阅这里

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

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44603854

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档