Exemple #1
0
 private static CountFilesResponse CreateCountFilesResponse(CountFilesResult countFilesResult, bool cancelled)
 {
     return(new CountFilesResponse
     {
         FilesGreaterHundred = countFilesResult.FilesGreaterHundred,
         FilesLessFiftyAndGreaterTen = countFilesResult.FilesLessFiftyAndGreaterTen,
         FilesLessTen = countFilesResult.FilesLessTen,
         Timeouted = cancelled
     });
 }
Exemple #2
0
        public CountFilesResult CountFilesInDirectory(string path, CancellationToken cancellationToken)
        {
            if (!Directory.Exists(path))
            {
                return(null);
            }

            var countFilesResult = new CountFilesResult();

            new DirectoryInfo(path)
            .ForceEnumerateFiles()
            .AsParallel()
            .TakeWhile(_ => !cancellationToken.IsCancellationRequested)     // WithCancellation throws exception, so this variant is cheaper for runtime
            .ForAll(file =>
            {
                var fileSizeMb = file.Length / 1024.0 / 1024;
                if (fileSizeMb <= 10)
                {
                    countFilesResult.FilesLessTen++;
                    return;
                }

                if (fileSizeMb >= 100)
                {
                    countFilesResult.FilesGreaterHundred++;
                    return;
                }

                if (fileSizeMb > 10 && fileSizeMb <= 50)
                {
                    countFilesResult.FilesLessFiftyAndGreaterTen++;
                }
            });

            return(countFilesResult);
        }