我有以下代码:
foreach (string file in Directory.EnumerateFiles(@"mynetwork\dirall", "*.*", SearchOption.AllDirectories))
{
list.Add(file);
}
目录有大约 200 万个文件。我想从中构建索引,我将从填充的列表对象写入文件。
执行大约需要 45 分钟。我可以划分这个过程并行执行吗?
任何的想法?穿线什么的?
我有以下代码:
foreach (string file in Directory.EnumerateFiles(@"mynetwork\dirall", "*.*", SearchOption.AllDirectories))
{
list.Add(file);
}
目录有大约 200 万个文件。我想从中构建索引,我将从填充的列表对象写入文件。
执行大约需要 45 分钟。我可以划分这个过程并行执行吗?
任何的想法?穿线什么的?
我通过使用从 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));
}