0

私は次のコードを持っています:

foreach (string file in Directory.EnumerateFiles(@"mynetwork\dirall", "*.*", SearchOption.AllDirectories))
{
    list.Add(file);
}

ディレクトリには約 200 万のファイルがあります。入力したリストオブジェクトからファイルに書き込むインデックスを作成したいと思います。

実行には約 45 分かかります。このプロセスを分割して並列実行できますか?
何か案が?スレッドか何か?

4

1 に答える 1

0

Stackoverflow から取得した次のコードを使用して動作させました!

    // Takes same patterns, and executes in parallel
    public static IEnumerable<string> GetDirs(string path, string searchPattern, SearchOption searchOption = SearchOption.TopDirectoryOnly)
    {
        return Directory.EnumerateDirectories(path, searchPattern, searchOption);
    }

    // Takes same patterns, and executes in parallel
    public static IEnumerable<string> GetFiles(string[] paths,string searchPattern, SearchOption searchOption = SearchOption.AllDirectories)
    {
        return paths.AsParallel().SelectMany(path => Directory.EnumerateFiles(path, searchPattern, searchOption));
    }
于 2012-11-30T09:05:25.883 に答える