public IEnumerable <DbAlbum> ReadAlbums() { this.StartedReadingAlbums.Invoke(); int counter = 0; foreach (var album in _deserializedAlbums) { counter++; yield return(album); ProgressChanged.Invoke(counter, _deserializedAlbums.Count); } FinishedReadingAlbums.Invoke(); }
public IEnumerable <DbAlbum> ReadAlbums(SortOrder sortOrder) { this.StartedReadingAlbums.Invoke(); uint sortAtom = 0; switch (sortOrder) { case SortOrder.DateAdded: sortAtom = (uint)SchemaMap.kiIndex_DateAdded; break; case SortOrder.Album: sortAtom = (uint)SchemaMap.kiIndex_Title; break; case SortOrder.Artist: sortAtom = (uint)SchemaMap.kiIndex_DisplayArtist; break; default: throw new ArgumentOutOfRangeException("sortOrder"); } //querying all albums, creates a property bag inside this method to query the database ZuneQueryList albums = GetAlbumQueryListSorted(sortAtom); albums.AddRef(); var uniqueIds = albums.GetUniqueIds(); for (int i = 0; i < uniqueIds.Count; i++) { object uniqueId = uniqueIds[i]; yield return(GetAlbumMin((int)uniqueId)); ProgressChanged.Invoke(i, uniqueIds.Count - 1); } FinishedReadingAlbums.Invoke(); albums.Release(); albums.Dispose(); }