void CreateIndex(ChangedSource changes, IList <ChangedSource> orderedNeedProcessingChanges) { if (IsFile(changes.FilePath)) { if (IndexBuilder.CreateIndex(new FileInfo(changes.FilePath)) == IndexBuildResults.FailedWithIOException) { EnqueueToFailedSource(changes); } } else if (IsDirectory(changes.FilePath)) { foreach (var file in Directory.GetFiles(changes.FilePath, "*", SearchOption.AllDirectories).Where(file => orderedNeedProcessingChanges.All(changedSource => !changedSource.FilePath.Equals(file, StringComparison.InvariantCultureIgnoreCase)) && ChangedSources.All(changedSource => !changedSource.FilePath.Equals(file, StringComparison.InvariantCultureIgnoreCase)))) { Log.LogInformation($"{IndexConfig.IndexName}: Enqueue File {file} Created to changes source"); EnqueueChangeSource(WatcherChangeTypes.Created, file); } } }