我正在尝试让我的Windows应用商店应用程序扫描用户的硬盘驱动器,查找具有特定扩展名的文件,以便我的应用程序能够在内部菜单中显示它们。显然,由于必要的权限,用户必须首先使用FolderPicker来指示他想要扫描的驱动器的根。
可悲的是,我在MSDN上找到的所有方法都会导致性能非常差。页面https://msdn.microsoft.com/en-us/library/windows/apps/hh994634.aspx下面的示例是简单文件夹枚举任务的更佳性能替代方案。通过使用QueryOptions
属性设置为FolderDepth
的{{1}}对象,您可以轻松调整它以处理扫描整个驱动器,然后让用户指向根文件夹。
FolderDepth.Deep
对于具有大约50GB数据的普通HDD,这种方法可能需要5到10分钟,这实在是不可接受。奇怪的是,对该文件类型执行Windows搜索时,查询返回的时间不到30秒,这意味着在某处可以获得性能提升的空间。
有人知道更快地完成这项任务的方法吗?
答案 0 :(得分:0)
Windows Search具有文件夹和文件(该服务监视器)的预建索引。要达到此性能,您应该构建自己的索引并在以后使用它。没有办法加速线性扫描,GetFilesAsync
中的等待是应用程序侧面最高性能的标志。