private void ff_FileFound(object sender, FileFinderEventArgs e) { var e2 = new XInputMaskScannerEventArgs(); e2.DirectoryIndex = e.DirectoryIndex; e2.Directories = e.Directories; e2.FileIndex = e.FileIndex; e2.Files = e.Files; e2.State = XInputMaskScannerState.DirectoryUpdate; e2.Message = string.Format("Step 1: {0} programs found. Searching path {1} of {2}. Please wait...", e.Files.Count, e.DirectoryIndex + 1, e.Directories.Count); ReportProgress(e2); }
public void AddFiles(DirectoryInfo di, ref List <FileInfo> fileList, string searchPattern, bool allDirectories) { try { var patterns = searchPattern.Split(new[] { ';' }, StringSplitOptions.RemoveEmptyEntries); if (patterns.Length == 0) { // Lookup for all files. patterns = new[] { "" }; } for (int p = 0; p < patterns.Length; p++) { var pattern = patterns[p]; var files = string.IsNullOrEmpty(pattern) ? di.GetFiles() : di.GetFiles(pattern); for (int i = 0; i < files.Length; i++) { // Pause or Stop. while (IsPaused && !IsStopping) { // Logical delay without blocking the current thread. System.Threading.Tasks.Task.Delay(500).Wait(); } if (IsStopping) { return; } // Do tasks. var fullName = files[i].FullName; if (!fileList.Any(x => x.FullName == fullName)) { fileList.Add(files[i]); var ev = FileFound; if (ev != null) { var e = new FileFinderEventArgs(); e.Directories = _Directories; e.DirectoryIndex = _DirectoryIndex; e.FileIndex = fileList.Count - 1; e.Files = fileList; ev(this, e); } } } } } catch { } try { // If must search inside subdirectories then... if (allDirectories) { var subDis = di.GetDirectories(); foreach (DirectoryInfo subDi in subDis) { // Pause or Stop. while (IsPaused && !IsStopping) { // Logical delay without blocking the current thread. System.Threading.Tasks.Task.Delay(500).Wait(); } if (IsStopping) { return; } // Do tasks. AddFiles(subDi, ref fileList, searchPattern, allDirectories); } } } catch { } }