private IEnumerable <string> EnumerateFilesInFolder(string targetDirectory) { var fileEntries = Directory.GetFiles(targetDirectory); foreach (var file in fileEntries) { FileFinded?.Invoke(); if (_filterPattern.Invoke(file)) { FilteredFileFinded?.Invoke(); } yield return(file); } var subdirectoryEntries = Directory.GetDirectories(targetDirectory); foreach (string subdirectory in subdirectoryEntries) { DirectoryFinded?.Invoke(); if (_filterPattern.Invoke(subdirectory)) { FilteredDirectoryFinded?.Invoke(); } foreach (var file in EnumerateFilesInFolder(subdirectory) .TakeWhile(file => !_cancelTokenSource.IsCancellationRequested) .ToList()) { yield return(file); } } }
private DirectoryEntityCollection FilterDirectories(DirectoryEntityCollection collection) { collection.Directories = _filterAction?.Invoke(collection.Directories) ?? collection.Directories; for (var i = 0; i < collection.SubEntities.Length; i++) { collection.SubEntities[i] = FilterDirectories(collection.SubEntities[i]); } FilteredDirectoryFinded?.Invoke(ref args); if (args.RemoveDirectories.Any()) { collection.RemoveFolder(args.RemoveDirectories); } if (args.RemoveFiles.Any()) { collection.RemoveFiles(args.RemoveFiles); } if (args.StopSearching) { return(collection); } return(collection); }
private void CallEventDirectoryFound() { if (filtered) { FilteredDirectoryFinded?.Invoke(this, directoryArgs); } else { DirectoryFinded?.Invoke(this, directoryArgs); } }
protected virtual void OnDirectoryFinded(DirectoryInfo directoryInfo, bool isFiltered = false) { var arg = new ItemFindedArg <FileSystemInfo>(directoryInfo); _argList.Add(arg); if (isFiltered) { FilteredDirectoryFinded?.Invoke(this, arg); } else { DirectoryFinded?.Invoke(this, arg); } }
protected virtual void OnFilteredDirectoryFinded(FileSystemEventArgs args) { FilteredDirectoryFinded?.Invoke(this, args); }
protected virtual void OnFilteredDirectoryFinded(string path) //запуск события после фильтрации { FilteredDirectoryFinded?.Invoke(path); Console.WriteLine(path); }