private void goButton_Click(object sender, RoutedEventArgs e) { try { if (!string.IsNullOrEmpty(browseTextBox.Text)) { string directory = browseTextBox.Text; goButton.IsEnabled = false; buttonCancel.IsEnabled = true; if (radioButtonRepeated.IsChecked.GetValueOrDefault()) { _currentThread = new Thread(() => { List <HashedFile> repeatedFiles = _repeatedFilesFinder.GetRepeatedFiles(directory); List <RepeatedFileModel> repeatedFileModels = new List <RepeatedFileModel>(); foreach (var repeatedFile in repeatedFiles) { foreach (var file in repeatedFile.FilesWithHash) { repeatedFileModels.Add(new RepeatedFileModel() { Hash = repeatedFile.ComputedHash, Path = file }); } } Dispatcher.Invoke(new Action(() => { dataGridRepeatedFiles.ItemsSource = repeatedFileModels; goButton.IsEnabled = true; buttonCancel.IsEnabled = false; })); }); _currentThread.Start(); } else { _currentThread = new Thread(() => { List <Tag> tagsInFileNames = _tagExtractor.GetTagsInFileNames(directory); Dispatcher.Invoke(new Action(() => { dataGridTags.ItemsSource = tagsInFileNames; goButton.IsEnabled = true; buttonCancel.IsEnabled = false; })); }); _currentThread.Start(); } } else { MessageBox.Show("Pasta não informada."); } } catch (Exception ex) { MessageBox.Show(ex.Message); } }