private IEnumerable <string> GetSubFolders(CancellationToken token, string source) { var directories = new List <string>(); try { directories.Add(source); var allSubFolders = QuickIODirectory.EnumerateDirectories(source); foreach (var subFolder in allSubFolders.TakeWhile(rawDir => !token.IsCancellationRequested)) { directories.AddRange(GetSubFolders(token, subFolder.FullName)); } } catch (Exception e) { this.Log().ErrorException("EnumerateDirectories", e); } return(directories); }
private static void ProcessDirectory(string path) { Parallel.ForEach(QuickIODirectory.EnumerateDirectories(path), dir => { try { Parallel.ForEach(QuickIODirectory.EnumerateFiles(dir), file => { if (file.AsFileInfo().Extension.Equals(".docx")) { fileInfos.Add(file); } }); ProcessDirectory(dir.FullName); } catch (Exception e) { Console.WriteLine("Unable to access directory {0}", dir.FullName); } }); }