private async void findButton_Click(object sender, EventArgs e) { var searchKeys = inputPatterns.Text .Split(new string[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries) .Where(s => !string.IsNullOrWhiteSpace(s)) .ToArray(); var output = new StringBuilder(); IFileEvaluator fileEvaluator = null; if (optFileContainsSubstring.Checked) { fileEvaluator = new FilenameSubstringEvaluator(); } else if (optFileHasConfigExtension.Checked) { fileEvaluator = new FilenameSubstringWithConfigExtensionEvaluator(); } else if (optFileDoesNotHaveConfigExtension.Checked) { fileEvaluator = new FilenameSubstringWithoutConfigExtensionEvaluator(); } var fileFinder = new Finder( new FindOptions { StartFolder = startFolder.Text, SearchKeys = searchKeys, FileEvaluator = fileEvaluator, Progress = new Progress <FindProgress>(progress => { if (progress.Phase == FindProgressPhase.Finding) { statusLabel.Text = string.Format("{0} of {1}", progress.AllIndex, progress.AllTotal); Console.Out.WriteLine(string.Format("{0} of {1}", progress.AllIndex, progress.AllTotal)); } }) } ); var findResult = await fileFinder.Start(); if (findResult.HadErrors) { MessageBox.Show("Error occurred: " + findResult.Error.Message); } else { foreach (var result in findResult.Results) { output.AppendLine(result.FullFilename); } resultsTextbox.Text = output.ToString(); MessageBox.Show(string.Format("Matches found: {0}", findResult.Results.Count)); } }
public Finder(FindOptions options) { _fileEvaluator = options.FileEvaluator; if (_fileEvaluator == null) { throw new InvalidOperationException("options.FileEvaluator cannot be null"); } _fileEvalOptions = new FileEvaluationOptions { SearchKeys = options.SearchKeys }; _options = options; _progress = options.Progress; }