У меня очень простой Parallel.ForEach, который вызывает следующий код:
var maxDegree = new ParallelOptions{MaxDegreeOfParallelism = 5};
Parallel.ForEach(PList,maxDegree,fl =>
{
ProjectDirectoryProcessing pjp = new ProjectDirectoryProcessing();
pjp.ProjectProcessor(fl);
Console.ReadLine();
}
);
public class ProjectDirectoryProcessing
{
public void ProjectProcessor(string rootDirectory)
{
DirectoryInfo Dinfo = new DirectoryInfo(rootDirectory);
DirectoryInfo[] directories = Dinfo.GetDirectories("*.*", SearchOption.AllDirectories);
FileInfo[] finfo = Dinfo.GetFiles("*.*", SearchOption.AllDirectories);
foreach (FileInfo f in finfo)
{
FileSize = FileSize + f.Length;
}
FileCount = finfo.Length;
DirectoryCount = directories.Length;
}
}
Проблема в том, что у меня не хватает памяти, я думал о GC.Collect () после pjp.ProjectProcessorParallel.ForEach, но я не уверен, будет ли это работать.Каталоги очень большие, и я не уверен, что их очистка очень поможет.Что было бы хорошим способом справиться с этим?