【发布时间】:2012-05-15 17:11:41
【问题描述】:
在我问过Retrieve a list of filenames in folder and all subfolders quickly 和我发现的其他几个问题中,似乎搜索许多文件的方法是使用 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();
【问题讨论】: