private void OpenDirectory(object obj) { Load_indicator = 0; TextInFile = ""; PathSearchFiles.Clear(); PathFiles.Clear(); var files = DirectoryUsing.DirectoryOpen(); try { if (files != null) { foreach (string filename in files) { PathFiles.Add(new PathFile { FileName = filename }); } } } catch (Exception ex) { MessageBox.Show(ex.Message); } }
async void SearchWord(object obj) { CancellationToken token = cancelTokenSource.Token; PathSearchFiles.Clear(); Load_indicator = 0; searchProcess = true; await Task.Run(() => { BreakButtonVisibality = "Visible"; foreach (var path in PathFiles) { if (token.IsCancellationRequested) { //MessageBox.Show("Операция прервана"); return; } Load_indicator++; string text = Convert.ToString(FileUsing.OpenWordprocessingDocumentReadonly(path.FileName)); try { if (text.Contains(FindText)) { App.Current.Dispatcher.Invoke((System.Action) delegate { PathSearchFiles.Add(new PathFile { FileName = path.FileName }); // так как список может обновится только //из потока, где он был создан проделегируем выполнение данного действия основному потоку }); // MessageBox.Show(text); } } catch (Exception ex) { MessageBox.Show(ex.Message); } } searchProcess = false; BreakButtonVisibality = "Collapsed"; }); // MessageBox.Show(Convert.ToString(PathSearchFiles.Count)); }