public MangaViewModel(IMangaService mangaService) : base()
        {
            _mangaService       = mangaService;
            _mangaAPIEnumerator = new MangaApiEnumerator();

            BindingOperations.EnableCollectionSynchronization(MangaItems, _CollectionLock);
        }
        protected override async Task ExecuteJob()
        {
            if (animes.Any())
            {
                ConcurrentBag <AnimeModel> updatedAnimeEntries = new ConcurrentBag <AnimeModel>();
                AnimeApiEnumerator         animeApi            = new AnimeApiEnumerator();
                List <Task> animeRequests = new List <Task>();

                JobEvent.NotifyJobProgressChange(0, "Querying animes");

                for (int i = 0; i < animes.Count(); i = i + EntriesPerRequest)
                {
                    var currEntries = animes.Skip(i).Take(EntriesPerRequest);
                    animeRequests.Add(
                        Task.Run(async() => {
                        var requestResult = await animeApi.GetByIdSet(currEntries.Select(e => e.Id).ToArray());

                        foreach (AnimeModel entry in requestResult)
                        {
                            updatedAnimeEntries.Add(entry);
                            JobEvent.NotifyJobProgressChange(1, isIncremental: true);
                        }
                    }));
                }

                await Task.WhenAll(animeRequests);

                JobEvent.NotifyJobProgressChange(0, "Updating animes", true);

                animeService.AddOrUpdateRange(updatedAnimeEntries, (progress) => {
                    JobEvent.NotifyJobProgressChange((int)progress, isIncremental: true);
                });

                await Task.Delay(100);
            }

            if (mangas.Any())
            {
                ConcurrentBag <MangaModel> updatedMangaEntries = new ConcurrentBag <MangaModel>();
                MangaApiEnumerator         mangaApi            = new MangaApiEnumerator();
                List <Task> mangaRequests = new List <Task>();

                JobEvent.NotifyJobProgressChange(0, "Querying mangas", true);

                for (int i = 0; i < mangas.Count(); i = i + EntriesPerRequest)
                {
                    var currEntries = mangas.Skip(i).Take(EntriesPerRequest);
                    mangaRequests.Add(
                        Task.Run(async() => {
                        var requestResult = await mangaApi.GetByIdSet(currEntries.Select(e => e.Id).ToArray(), false);

                        foreach (MangaModel entry in requestResult)
                        {
                            updatedMangaEntries.Add(entry);
                            JobEvent.NotifyJobProgressChange(1, isIncremental: true);
                        }
                    }));
                }

                await Task.WhenAll(mangaRequests);

                JobEvent.NotifyJobProgressChange(0, "Updating mangas", true);

                mangaService.AddOrUpdateRange(updatedMangaEntries, (progress) => {
                    JobEvent.NotifyJobProgressChange((int)progress, isIncremental: true);
                });
            }
        }