在我问的问题中,快速检索文件夹和所有子文件夹中的文件名列表以及我发现的其他一些文件,似乎搜索许多文件的方法是使用 EnumerateFiles 方法。
EnumerateFiles 和 GetFiles 方法的区别如下: 使用 EnumerateFiles 时,可以在返回整个集合之前开始枚举名称集合;当您使用 GetFiles 时,您必须等待返回整个名称数组,然后才能访问该数组。因此,当您处理许多文件和目录时,EnumerateFiles 会更有效。
这对我来说听起来很棒,我的搜索大约需要 10 秒,所以我可以在信息进入时开始制作我的列表。但我无法弄清楚。当我运行 EnumerateFiles 方法时,应用程序会冻结,直到它完成。我可以在后台工作人员中运行它,但同样的事情也会发生在那个线程上。有什么帮助吗?
DirectoryInfo dir = new DirectoryInfo(MainFolder);
List<FileInfo> matches = new List<FileInfo>(dir.EnumerateFiles("*.docx",SearchOption.AllDirectories));
//This wont fire until after the entire collection is complete
DoSoemthingWhileWaiting();