私が尋ねた質問では、フォルダとすべてのサブフォルダ内のファイル名のリストをすばやく取得します。他にもいくつか見つけましたが、多くのファイルを検索する方法は、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();