在我問Retrieve a list of filenames in folder and all subfolders quickly的問題和其他一些我發現,似乎搜索許多文件的方法是使用EnumerateFiles方法。如何在完成之前訪問DirectoryInfo.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();
謝謝你在裏德晚些時候來。我本可以在5分鐘前使用它。這幾乎是我想要的,但我已經從我過去的問題和上面的答案中找到了它。非常感謝您花時間爲您提供完整的答案。 –
@ K'Leg更快!=更好;)我想你可能需要的一切,包括在這裏不止一個選項... –
裏德看起來我們在你的第二個答案中缺少一個右括號。我試圖將其添加到最後,但我收到錯誤。任何想法? –