private void PathRightEvent_TextChanged(object sender, TextChangedEventArgs e) { if (_previousPathRight != "" && PathRight.Text == "") { PathRight.Text = _previousPathRight; return; } _previousPathRight = PathRight.Text; UpdateFilesList(_filesRight = CreateFileFinder(_filesRight, _eventRight, FileDescriptionRight, PathRight.Text, _iconUpdaterRight)); }
//создаем экземпляр класса для мониторинга файлов в папке protected FileFinderThread CreateFileFinder(FileFinderThread Current, IntPtr Event, ObservableCollection <FileInformation> Files, String Path, Timer IconUpdater, Thread ThreadHandler = null) { if (String.IsNullOrWhiteSpace(Path)) { throw new Exception("This folder isn't existing!"); } if (Current == null) { return(new FileFinderThread(Event, Files, Path, Accept, IconUpdater, ThreadHandler)); } Current.SyncEvent = Event; Current.MonitoringPath = Path; Current.FilesList = Files; Current.CurrentTimer = IconUpdater; if (ThreadHandler != null) { Current.FilesThread = ThreadHandler; } return(Current); }
//Files list update private void UpdateFilesList(FileFinderThread finder) { try { if (finder.FilesThread != null && finder.FilesThread.IsAlive) { WinAPI.SetEvent(finder.SyncEvent); finder.FilesThread.Join(); WinAPI.ResetEvent(finder.SyncEvent); } finder.FilesThread = new Thread(new ParameterizedThreadStart(FileFinderThread.FileFinderThreadInit)); finder.FilesThread.Start(finder); } catch (Exception ex) { //We can write to log-file this error MessageBox.Show(String.Format("{0} is incorrect path! \n {1}", PathLeft.Text, ex.Message), "Error in path", MessageBoxButton.OK, MessageBoxImage.Warning); } }