コード例 #1
0
        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 网络连接失败
            }
        }
コード例 #2
0
        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;
                }
            }
        }