//Dodaj odcinek do wspolnej listy private void addEpisodes(object threadParam) { ThreadParam context = (ThreadParam)threadParam; SearchTvdb S = new SearchTvdb(); sumEpisodes(S.getAllEpisodes(context._id, context._page)); }
//Pobiera asynchronicznie wszystkie odcinki i zwraca ich liste public List <Episode> getEpisodes(int seriesID) { List <Thread> th = new List <Thread>(); SearchTvdb STV = new SearchTvdb(); //Na stronie mieście się max 100 odcinków, jeden wątek zajmie się jedną odpowiedzią for (int i = 0; i < Math.Ceiling((decimal)STV.getOverallEpisodesNumber(seriesID) / 100); i++) { Thread t = new Thread(new ParameterizedThreadStart(addEpisodes)); th.Add(t); t.IsBackground = true; t.Start(new ThreadParam(seriesID, i + 1)); } foreach (Thread t in th) { t.Join(); } //Po dodaniu przez wątki list - sortowanie ep = ep.OrderBy(x => x._seasonNumber).ThenBy(y => y._episodeNumber).ToList(); if (ep.Count > 0) { deleteSpecials(); } return(ep); }