private static void SearchDirectory(DirectoryInfo dirInfo) { if (!_cancellationTokenSource.IsCancellationRequested) { while (_pauseSearch) { // стоит на паузе } try { foreach (var info in dirInfo.GetFileSystemInfos(_searchParams.FileName)) { _count++; SearchInfo?.Invoke(new SearchInfoEventArgs(info, _count)); if (_cancellationTokenSource.IsCancellationRequested) { break; } while (_pauseSearch) { // стоит на паузе } if (MatchesRestrictions(info)) { _foundedCount++; FoundInfo?.Invoke(new FoundInfoEventArgs(info, _foundedCount)); } } if (_searchParams.IncludeSubDirsChecked) { foreach (var subDirInfo in dirInfo.GetDirectories()) { if (_cancellationTokenSource.IsCancellationRequested) { break; } while (_pauseSearch) { // стоит на паузе } SearchDirectory(subDirInfo); } } } catch (Exception) { // ignored } } }