private static async Task UpdatePosters(int id) { await Task.Run(() => { var list = Poster.GetPosters(id); var oldList = Database.GetPosters(id); foreach (var poster in list) { var po = oldList.Where(x => x.id == poster.id).FirstOrDefault(); if (po != null) { if (po.Compare(poster)) { po.Update(poster); Database.EditPoster(id, po.id, po); } } else { Database.AddPoster(id, poster); } } //Remove results that got deleted oldList.Where(x => !list.Any(y => y.id == x.id)).ToList().ForEach(x => Database.RemovePoster(id, x.id)); }); }
private void GetPoster(int id) { if (poster == null) { List <Poster> list = Poster.GetPosters(id); if (list != null && list.Count > 0) { Poster poster = list[0]; Dispatcher.Invoke(new Action(() => { this.poster = new BitmapImage(new Uri(Helper.posterLink + poster.fileName)); }), DispatcherPriority.Send); } else { Dispatcher.Invoke(new Action(() => { this.poster = (BitmapImage)FindResource("NoPoster"); }), DispatcherPriority.Send); } } SetPoster(); }
/// <summary> /// Creates database from ids provided USAGE: await CreateDatabase(...) /// </summary> /// <param name="ids">List of TVDb ids</param> /// <returns></returns> private async Task GetFullShows(List <Tuple <int, string> > ids) { ProgressBarPage pbar = new ProgressBarPage(ids.Count); int total = 0; AddPage(pbar); //Wait for this task to complete without blocking main thread await Task.Run(() => { List <Task> tasks = new List <Task>(); foreach (Tuple <int, string> combination in ids) { tasks.Add(Task.Run(() => { int id = combination.Item1; //Create 4 tasks, wait for them to complete and then set value of ProgressBar Task[] secondTasks = new Task[4]; secondTasks[0] = Task.Run(() => { Series s = Series.GetSeries(id); s.libraryPath = combination.Item2; Database.AddSeries(s); }); secondTasks[1] = Task.Run(() => { List <Actor> list = Actor.GetActors(id); if (list != null) { Database.AddActor(id, list); } }); secondTasks[2] = Task.Run(() => { List <Episode> list = Episode.GetEpisodes(id); if (list != null) { Database.AddEpisode(id, list); } }); secondTasks[3] = Task.Run(() => { List <Poster> list = Poster.GetPosters(id); if (list != null) { Database.AddPoster(id, list); } }); Task.WaitAll(secondTasks); Dispatcher.Invoke(new Action(() => { total++; pbar.SetValue(total); }), DispatcherPriority.Send); })); } //Wait for all tasks created in foreach to complete tasks.WaitAll(); Thread.Sleep(500); }); //This code runs after all API calls are done and stuff is saved PleaseWait pleaseWait = new PleaseWait(); AddPage(pleaseWait); var seriesList = Database.GetSeries().Where(x => ids.Any(y => y.Item1 == x.id)).ToList(); await Renamer.ScanAndRename(seriesList); RemoveAllPages(); SetPage(new Library()); }