public FindDuplicatesCommand( [NotNull] DuplicatesEngine duplicatesEngine, [NotNull] IReadOnlyCollection <SearchPath> searchPaths, [NotNull] Func <IInclusionPredicate <FileData> > getGetInclusionPredicate, [NotNull] Func <IFileComparer> getSelectedComparer) { DuplicatesEngine = duplicatesEngine; SearchPaths = searchPaths; GetInclusionPredicate = getGetInclusionPredicate; GetSelectedComparer = getSelectedComparer; }
public override async void Execute(object parameter) { try { CanCancel = true; Enabled = false; OnFindDuplicatesStarting(); var selectedComparer = GetSelectedComparer(); using (Cts = new CancellationTokenSource()) await DuplicatesEngine.FindDuplicates(SearchPaths, GetInclusionPredicate(), selectedComparer.CandidatePredicate, selectedComparer.ComparableFileFactory, Cts.Token); } catch (OperationCanceledException) { /* ignore */ } finally { CanCancel = false; Cts.Dispose(); Cts = null; Enabled = true; OnFindDuplicatesFinished(); } }