public static DataDBURLJob[] MakeJobs(DataDBAsynchService ddbs, int mode) { DataDBURLJob[] jobs__ = null; try { string[][] jobs_ = GetJobs(ddbs, mode); //берем данные из строки ParsersJob if (jobs_ != null) { jobs__ = new DataDBURLJob[jobs_.Count()]; for (int i = 0; i < jobs_.Count(); i++) { //string[] job = jobs_[i]; Array.Resize(ref jobs_[i], jobs_[i].Count() + 1); jobs__[i] = new DataDBURLJob(i, jobs_[i]); GC.SuppressFinalize(jobs_[i]); } GC.SuppressFinalize(jobs_); } } catch (Exception e) { Console.WriteLine("Ошибка делания джобов " + e.Message); return null; } return jobs__; }
public bool AddJobs(DataDBAsynchService ddbs, int mode) { bool r = false; string[][] jobs_ = null; try { jobs_ = GetJobs(ddbs, mode); //берем данные из строки ParsersJob if (jobs_ != null) { if (jobs_.Any()) lock (jobs) if (!jobs.Any()) jobs.Clear(); for (int i = 0; i < jobs_.Count(); i++) { using (DataDBURLJob temp = new DataDBURLJob(i, jobs_[i])) try { lock (jobs) if (!jobs.Exists(x => x._addressparsing == temp._addressparsing)) jobs.Add(temp); } catch (Exception ex) { ddbs.WriteErrorMessage(ddbs.ConnectionString, 0, "", "ошибка при добавлении заданий " + ex.Message); } finally { if (temp != null) GC.SuppressFinalize(temp); if (jobs_[i] != null) GC.SuppressFinalize(jobs_[i]); } } } r = true; } catch (Exception e) { Console.WriteLine("Ошибка в добавлении объявлений же " + e.Message); } finally { if (jobs_!=null) GC.SuppressFinalize(jobs_); } return r; }
private void got_jobsEnqueue(DataDBURLJob djob) { lock (got_jobs) { got_jobs.Enqueue(djob); } tick(); }
//функция возвращения задачи в обработку если при скачивании произошло нечто фатальное public void Enque(DataDBURLJob d) { lock (jobs.jobs) { jobs.jobs.Add(d); } tick(); }
private void ProcessOnePage(DataDBURLJob temp) { int i = 0; //если есть задание на обработку страницы if (temp != null) { DirtyApartments t = null; arw.RunWithTimeout(() => { DateTime dt = DateTime.Now; try { t = temp.StartProcessPage(ddbs, true); } catch (Exception ex) { if (temp != null) { ddbs.WriteErrorMessage(ddbs.ConnectionString, i, null, "Ошибка в задаче обработки страницы " + ex.Message, temp._addressparsing); } else ddbs.WriteErrorMessage(ddbs.ConnectionString, i, null, "Ошибка в задаче обработки страницы " + ex.Message, -1); } }, 31009, () => { try { if (t != null) { try { if (!String.IsNullOrEmpty(t.Фото) && parse_with_photos && (mode != 2 || !t.Источник.Contains("мирквартир") || !t.Источник.Contains("mail"))) { getphotosfromonepage(t); } else { lock(ap) ap.Add(t); if (temp.status != 1) temp.status = 1; statusesadd(temp._addressparsing, temp.status); GC.SuppressFinalize(temp); } } catch (Exception ex) { Console.WriteLine("Ошибка проводки объявления " + t.Ссылка + " " + ex.Message); } finally { if (t != null) t.Dispose(); if (t != null) GC.SuppressFinalize(t); } } else { if (temp.status < 2) temp.status = 4; statusesadd(temp._addressparsing, temp.status); } } catch (Exception ex) { Console.WriteLine("Произошла ошибка в проводке обработанного объявления. Возвращаем его в очередь " + ex.Message); processonepage(temp); } }); } }
private void Next() { SetLabelText(label1, made.Count + "/" + jobs.Count()); Application.DoEvents(); if (webBrowser1 != null) { ProcessAd(); if (!jobs.Any) { SendAll(); } { d = jobs.jobs[0]; jobs.jobs.RemoveAt(0); LoadAd(); } Application.DoEvents(); HtmlElement h = GetWebBrowserElementByClass("phone "); if ( h!= null && !h.InnerHtml.Contains("телефон") && h.InnerHtml.Length > 5 ) Next(); else MessageBox.Show("Введите капчу"); } }