예제 #1
0
 private AnalyzeResult Analyze(IProgress<Tuple<string, int>> callback)
 {
     callback.Report(Tuple.Create("Starting", 0));
     var pathResult = FindPaths(callback);
     callback.Report(Tuple.Create("Checking nesting", 50));
     CheckNesting(pathResult.Item1);
     callback.Report(Tuple.Create("Finding files", 50));
     var files = FindFiles(pathResult.Item1, callback);
     callback.Report(Tuple.Create("Calculating", 90));
     var result = new AnalyzeResult(files, pathResult.Item2.Select(a => "Found paths for " + a.Name).ToList());
     callback.Report(Tuple.Create("Done", 100));
     return result;
 }
예제 #2
0
 private CleanResult Clean(AnalyzeResult analyzeResult, IProgress<int> callback)
 {
     var failures = new List<string>();
     for (var i = 0; i < analyzeResult.Files.Count; i++)
     {
         var file = analyzeResult.Files[i];
         callback.Report(i);
         try
         {
             if (File.Exists(file.FullName))
                 File.Delete(file.FullName);
         }
         catch
         {
             failures.Add(file.FullName);
         }
     }
     return new CleanResult(failures);
 }
예제 #3
0
 public Task<CleanResult> CleanAsync(AnalyzeResult result, IProgress<int> callback)
     => Task.Run(() => Clean(result, callback));
예제 #4
0
 private async Task RunRefresh()
 {
     CanRefresh = false;
     Paths.Clear();
     Files.Clear();
     var callback = new Progress<Tuple<string, int>>(UpdateProgress);
     var result = await analyzerService.AnalyzeAsync(callback);
     Files.AddRange(result.Files);
     Paths.AddRange(result.UsedAnalyzers);
     Statistics = string.Format("{0} files found ({1})", result.Files.Count,
         StringUtilities.GetBytesReadable(result.TotalSize));
     currentResult = result;
     CanRefresh = true;
 }