async Task Searching() { task = Task.Factory.StartNew(() => { this.Dispatcher.BeginInvoke(new Action(() => { try { list.AddRange(Directory.GetFiles(open, $"*{txtName.Text}*", SearchOption.AllDirectories)); } catch (UnauthorizedAccessException) { System.Windows.MessageBox.Show("Отказано в доступе"); } catch (DirectoryNotFoundException) { System.Windows.MessageBox.Show("Указаная директория не существует"); } foreach (var item in list.ToList()) { this.Dispatcher.BeginInvoke(new Action(() => { if (!isStopped) { if (!isPaused) { FileInfo fi = new FileInfo(item); if (isCheck) { var fileContext = File.ReadAllLines(fi.FullName); context = new HashSet <string>(fileContext); if (fileContext.Contains(txtText.Text)) { var viewItem = new TreeViewItem(); viewItem.Header = fi.Name; viewItem.AddHandler(UIElement.PreviewMouseDownEvent, new MouseButtonEventHandler(mouse_Down)); viewItem.DataContext = fi.FullName; tree.Items.Add(viewItem); } } else { var viewItem = new TreeViewItem(); viewItem.Header = fi.Name; viewItem.AddHandler(UIElement.PreviewMouseDownEvent, new MouseButtonEventHandler(mouse_Down)); viewItem.DataContext = fi.FullName; tree.Items.Add(viewItem); } count++; txtLog.Text = $"Название файла: {fi.Name}\nКоличество файлов: {count}\nВремя: {sec} сек."; } } }), DispatcherPriority.Background); } }), DispatcherPriority.Normal); this.Dispatcher.BeginInvoke(new Action(() => { btnSearch.IsEnabled = true; btnCancel.IsEnabled = false; txtStatus.Text = "Завершено"; sec = 0; isWorked = false; count = 0; if (tree.Items.Count == 0) { System.Windows.MessageBox.Show("Файлы не найдены"); } }), DispatcherPriority.ApplicationIdle); }); }