/// <summary> /// Скачивает полную информацию по трекам в отдельном потоке. /// </summary> /// <param name="sender"></param> /// <param name="e"></param> public void LoadTraksThread(object sender, EventArgs e) { //Создние нового процесса. ThreadPool.QueueUserWorkItem((object o) => { if (PageSearch.GetElement(PageSearch.TextErrorFindBy) == null) { ListArtists = Browser.FindElements(PageSearch.TextArtistBy).ToList(); ListTracks = Browser.FindElements(PageSearch.TextTrackBy).ToList(); ListDurations = Browser.FindElements(PageSearch.TextDurationBy).ToList(); ListDownloads = Browser.FindElements(PageSearch.IconDownloadBy).ToList(); ListPlays = Browser.FindElements(PageSearch.IconPlayBy).ToList(); for (int i = 0; i < ListArtists.Count; i++) { int durationTrack = mainForm.TimeStringToInt(ListDurations[i].Text); if ((durationTrack < mainForm.DurationSetUser) || (mainForm.DurationSetUser == -1)) { TrackOptions trackOptions = new TrackOptions( i, ListArtists[i].Text, ListTracks[i].Text, ListDurations[i].Text, ListDownloads[i].GetAttribute("href"), ListTracks[i].Text + ".mp3"); ListTrackOptions.Add(trackOptions); } } //Обращение к элементам формы основного потока и закрытие прелоадера в основном потоке. mainForm.Invoke(new MethodInvoker(() => { mainForm.ShowFromSiteToForm(this.ListTrackOptions, mainForm.GetPanelResult(), mainForm.SetCountShowTracks()); formPreloaderTracks.Close(); })); } else { //Обращение к элементам формы основного потока и закрытие прелоадера в основном потоке. mainForm.Invoke(new MethodInvoker(() => { mainForm.ShowFromSiteToForm(this.ListTrackOptions, mainForm.GetPanelResult(), mainForm.SetCountShowTracks()); formPreloaderTracks.Close(); })); MessageBox.Show("Запрашиваемые треки не найдены"); } }); }