/// <summary> /// Load shows asynchronously /// </summary> public override async Task LoadShowsAsync() { var watch = Stopwatch.StartNew(); Page++; if (Page > 1 && Shows.Count == MaxNumberOfShows) { return; } Logger.Info( $"Loading page {Page}..."); HasLoadingFailed = false; try { IsLoadingShows = true; var shows = await ShowService.GetPopularShowsAsync(Page, MaxShowsPerPage, Rating, CancellationLoadingShows.Token, Genre).ConfigureAwait(false); DispatcherHelper.CheckBeginInvokeOnUI(() => { Shows.AddRange(shows.Item1); IsLoadingShows = false; IsShowFound = Shows.Any(); CurrentNumberOfShows = Shows.Count; MaxNumberOfShows = shows.Item2; }); } catch (Exception exception) { Page--; Logger.Error( $"Error while loading page {Page}: {exception.Message}"); HasLoadingFailed = true; Messenger.Default.Send(new ManageExceptionMessage(exception)); } finally { watch.Stop(); var elapsedMs = watch.ElapsedMilliseconds; Logger.Info( $"Loaded page {Page} in {elapsedMs} milliseconds."); } }