private void ScanDirectory(string directory, string[] fileExtensions, bool includeSubdirectories) { if (IgnoreDirectories.Contains(directory)) { if (Globals.VerboseLogging) { Logger.Info($"Skipping directory '{directory}' as set in ignore file."); } return; } if (includeSubdirectories) { foreach (var subDirectory in Directory.GetDirectories(directory)) { ScanDirectory(subDirectory, fileExtensions, includeSubdirectories); } } if (Globals.VerboseLogging) { Logger.Info($"Scanning directory '{directory}'."); } DirectoryInfo directoryInfo = new DirectoryInfo(directory); if (directoryInfo.EnumerateFiles("*.mp3", SearchOption.TopDirectoryOnly).Any()) { ScanActions.Add(() => ProcessDirectory(directoryInfo)); foreach (string extension in fileExtensions) { foreach (var file in directoryInfo.GetFiles("*." + extension.ToLower())) { ScanActions.Add(() => ProcessFile(file)); } } } }