private async Task SearchAllResultAsync() { var netWorkDataResult = await this._netWorkServices.GetAsync <SearchResultModel>("Search", "Search", new { keyWord = KeyWord, Global.Enums.SearchResultType.All, limit = Settings.Default.LimitPerPage }); if (netWorkDataResult.Successed) { var temp = netWorkDataResult.Data; this._tabKeyAndTotal["1"] = temp.Musics.Key; this._tabKeyAndTotal["2"] = temp.Artists.Key; this._tabKeyAndTotal["3"] = temp.Albums.Key; this._tabKeyAndTotal["4"] = temp.Mvs.Key; this._tabKeyAndTotal["5"] = temp.PlayLists.Key; this._tabKeyAndTotal["6"] = temp.Radios.Key; this._tabKeyAndTotal["7"] = temp.Users.Key; await Task.WhenAll(MusicResults.AddRangeAsync(temp.Musics.Value), ArtistResults.AddRangeAsync(temp.Artists.Value), AlbumResults.AddRangeAsync(temp.Albums.Value), MvResults.AddRangeAsync(temp.Mvs.Value), UserResults.AddRangeAsync(temp.Users.Value), PlayListResults.AddRangeAsync(temp.PlayLists.Value)); this._tabKeyAndOffset["1"] = 0; this._tabKeyAndOffset["2"] = 0; this._tabKeyAndOffset["3"] = 0; this._tabKeyAndOffset["4"] = 0; this._tabKeyAndOffset["5"] = 0; this._tabKeyAndOffset["6"] = 0; this._tabKeyAndOffset["7"] = 0; } else { //todo 网络连接失败 } }
private async void SearchResultNextPageCommandExecute(string tabKey) { if (this._tabKeyAndOffset.ContainsKey(tabKey)) { this._nextPageCancel?.Cancel(); var newCancel = new CancellationTokenSource(); this._nextPageCancel = newCancel; if (Settings.Default.LimitPerPage * (_tabKeyAndOffset[tabKey] + 1) < _tabKeyAndTotal[tabKey]) { try { var netWorkDataResult = await this._netWorkServices.GetAsync <SearchResultModel>("Search", "Search", new { KeyWord, SearchResultType = this._tabKeyAndType[tabKey], limit = Settings.Default.LimitPerPage, offset = ++this._tabKeyAndOffset[tabKey] }); if (!netWorkDataResult.Successed) { //todo 网络连接失败 throw new OperationCanceledException(); } var temp = netWorkDataResult.Data; switch (_tabKeyAndType[tabKey]) { case Global.Enums.SearchResultType.Music: this.MusicResults.AddRange(temp.Musics.Value); break; case Global.Enums.SearchResultType.Artist: ArtistResults.AddRange(temp.Artists.Value); break; case Global.Enums.SearchResultType.Album: AlbumResults.AddRange(temp.Albums.Value); break; case Global.Enums.SearchResultType.PlayList: PlayListResults.AddRange(temp.PlayLists.Value); break; case Global.Enums.SearchResultType.User: UserResults.AddRange(temp.Users.Value); break; case Global.Enums.SearchResultType.MV: MvResults.AddRange(temp.Mvs.Value); break; case Global.Enums.SearchResultType.Radio: break; default: break; } } catch (OperationCanceledException) { } } if (newCancel == this._nextPageCancel) { this._nextPageCancel = null; } } }