protected IEnumerable <AudioMetaData> GetAudioMetaDatasForDirectory(DirectoryInfo directory) { try { if (!CachedAudioDatas.ContainsKey(directory.FullName)) { var filesInMetaDataFolder = directory.GetFiles("*.mp3", SearchOption.TopDirectoryOnly); var metaDatasForFilesInFolder = new List <AudioMetaData>(); foreach (var fileInMetaDataFolder in filesInMetaDataFolder) { var metaData = TagsHelper.MetaDataForFile(fileInMetaDataFolder.FullName, true); metaDatasForFilesInFolder.Add(metaData.Data); } CachedAudioDatas.Add(directory.FullName, metaDatasForFilesInFolder); } return(CachedAudioDatas[directory.FullName]); } catch (Exception ex) { Logger.LogError(ex); } return(new AudioMetaData[0]); }