2012-11-28 88 views
0

我有以下代碼:並行執行C#

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

目錄中有大約200億個文件。我想建立索引,我 將從我填充的列表對象寫入文件。

需要約45分鐘的時間來執行。我可以將這個過程並行執行嗎?
有什麼想法?線程還是什麼?

回答

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)); 
    }