protected virtual void RaiseFilteredDirectoryFinded(FileOrDirectoryFindedEventArgs args) { if (FilteredDirectoryFinded != null) { FilteredDirectoryFinded(this, args); } }
private IEnumerable <string> GetFilesAndDirectories() { // После каждого найденной папки/файла будет происходить событие. foreach (string directory in Directory.GetDirectories(path)) { var eventArgs = new FileOrDirectoryFindedEventArgs { isBreak = false, isExclude = false, itemName = directory }; RaiseDirectoryFinded(eventArgs); // Если пользовтель захочет исключить найденный файл - он не будет включен в итоговую коллекцию. if (!eventArgs.isExclude) { yield return(directory); } // Если пользователь решил прервать дальнейший поиск. if (eventArgs.isBreak) { yield break; } } foreach (var file in Directory.GetFiles(path)) { var eventArgs = new FileOrDirectoryFindedEventArgs { isBreak = false, isExclude = false, itemName = file }; RaiseDirectoryFinded(eventArgs); if (eventArgs.isBreak) { yield break; } if (!eventArgs.isExclude) { yield return(file); } } RaiseEnd(); }
private IEnumerable <string> GetFilteredFilesAndDirectories() { foreach (var directory in Directory.GetDirectories(path).Where(filter)) { var eventArgs = new FileOrDirectoryFindedEventArgs { isBreak = false, isExclude = false, itemName = directory }; RaiseFilteredDirectoryFinded(eventArgs); if (eventArgs.isBreak) { yield break; } if (!eventArgs.isExclude) { yield return(directory); } } foreach (var file in Directory.GetFiles(path).Where(filter)) { var eventArgs = new FileOrDirectoryFindedEventArgs { isBreak = false, isExclude = false, itemName = file }; RaiseFilteredFileFinded(eventArgs); if (!eventArgs.isExclude) { yield return(file); } if (eventArgs.isBreak) { yield break; } } RaiseEnd(); }
static void OnFileOrDirectoryFound(object sender, FileOrDirectoryFindedEventArgs e) { string dialog = string.Empty; Console.WriteLine(e.itemName + " finded"); Console.WriteLine("Do you want to stop finding?"); InputYesOrNo(out dialog); if (dialog.ToLower() == "y") { e.isBreak = true; } Console.WriteLine("Do you want to exclude this file?"); InputYesOrNo(out dialog); if (dialog.ToLower() == "y") { e.isExclude = true; } }