我是一个相当有经验的开发人员,但这让我陷入了UWP的困境--我会保持简单。
假设我想查看图片文件夹中的所有照片,给它们加水印,并将水印版本保存在图片的子文件夹中(例如。图片\水印)
听起来容易吗?
Try 1:使用GetFilesAsync (包括。GetItemsAsync,GetFoldersAsync) --这个方法贯穿每个文件,给出了我需要的StorageFile对象。
这种方法有两个问题:
Try 2:使用查询的-这个方法涉及使用Windows.System.Search &查询来返回指向所有文件的指针列表(ish)。然后,我可以使用StorageFolderQueryResult动态获取每个StorageFile并立即发布,这样运行时代理就可以运行。这是非常快,因为它使用Windows索引系统,真的,非常快。
问题是查询系统相当愚蠢,当我创建子文件夹“带水印的照片”时,查询返回的存储文件(在查询时不存在)开始包含来自水印文件夹的文件。看起来,该查询实际上只是一些文件,而不是实际文件的静态列表,因此,根据在其范围内调用查询后添加/删除的任何文件,结果是任意的。
有人想过该怎么做吗?
发布于 2017-10-26 09:21:39
解决了-不可能使用索引系统。我创建了自己的查询类。它使用文件夹的GetItemsAsync方法,这里的对象数量不会杀死RuntimeBroker,我将路径存储在字符串列表中。包含所有文件和子文件夹的路径。然后,我可以根据需要使用GetFileFromPathAsync实例化和销毁StorageItems。RuntimeBroker对此没有意见,尽管它并不是最好的性能,但它确实为我提供了自定义文件/文件夹筛选。如果有人需要更多的信息,我很乐意详细说明。
https://stackoverflow.com/questions/46523087
复制相似问题