private async Task UpdateCharactersFromFavorited() { //TODO:testar mais algumas vezes, na primeira tentativa no dispositivo real //foram feitas trocas de aplicativo enquanto essa função continuava funcionando //ao terminar não foi completado todos as atualizações da lista, mas o processamento não parou //depois que terminou, ao clicar mais vezes em atualizar o restante que não tinha sido atualizado foi atualizando try { var db = App.liteDB.GetCollection <FavoritedAnimeCharacter>(); var characters = _collection as List <FavoritedAnimeCharacter>; double total = characters.Count; for (int i = 0; i < characters.Count; i++) { double result = (double)i / total; MessagingCenter.Send <ProgressPopupViewModel, double>(this, string.Empty, result); await App.DelayRequest(4); if (_cancelationToken != null && _cancelationToken.IsCancellationRequested) { _cancelationToken.Token.ThrowIfCancellationRequested(); } var chara = db.FindById(characters[i].Character.MalId); Character character = await App.Jikan.GetCharacter(chara.Character.MalId); character.RequestCached = true; await App.DelayRequest(4); CharacterPictures characterPictures = await App.Jikan.GetCharacterPictures(chara.Character.MalId); characterPictures.RequestCached = true; chara = new FavoritedAnimeCharacter(character, characterPictures.Pictures.ToList()); chara.IsFavorited = true; db.Update(chara.Character.MalId, chara); } } catch (JikanRequestException ex) { ex.SaveExceptionData(); } catch (OperationCanceledException ex) { } catch (Exception ex) { ex.SaveExceptionData(); } }
public async Task LoadAsync(object param) { var characterId = (long)param; IsLoading = true; CanEnable = !IsLoading; try { FavoritedAnimeCharacter animeCharacter = App.liteDB.GetCollection <FavoritedAnimeCharacter>().FindById(characterId); if (animeCharacter == null) { await App.DelayRequest(); Character character = await App.Jikan.GetCharacter(characterId); await App.DelayRequest(); var characterPictures = await App.Jikan.GetCharacterPictures(characterId); animeCharacter = new FavoritedAnimeCharacter(character, characterPictures.Pictures.ToList()); } CharacterContext = animeCharacter; } catch (JikanRequestException ex) { ex.SaveExceptionData(); } catch (OperationCanceledException ex) { Console.WriteLine($"Tasks canceladas {Environment.NewLine} " + $"{ex.Message}"); } catch (Exception ex) { ex.SaveExceptionData(); } finally { IsLoading = false; CanEnable = !IsLoading; } }