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; }
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); }
public Task<CleanResult> CleanAsync(AnalyzeResult result, IProgress<int> callback) => Task.Run(() => Clean(result, callback));
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; }