예제 #1
0
        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);
         }
     });
 }