public void ToDB()
 {
     lock (ap)
     {
         DataDBSerializer s = new DataDBSerializer(ap.ToArray(), true);
         if (!s.ToDB("ParsersData", ddbs.ConnectionString))
         {
             ddbs.WriteErrorMessage(ddbs.ConnectionString, 0, null, "Ошибка отправки объявлений");
         }
         else
         {
             ap.RemoveAll(item => true);
             ap.Clear();
         }
     }
 }
Exemple #2
0
 private void SendAll()
 {
     Dictionary<int, int> statuses = new Dictionary<int, int>();
     foreach (DataDBURLJob d in made)
         statuses.Add(d._addressparsing, d.status);
     jobs.jobs.Clear();
     made.Clear();
     if(statuses.Any())
         while (!DataDBURLJobs.SetJobStatuses(statuses, ddbs)) Thread.Sleep(100);
     if (das.Any())
     {
         DataDBSerializer s = new DataDBSerializer(das.ToArray(), true);
         while (!s.ToDB("ParsersData", ddbs.ConnectionString))
         {
             ddbs.WriteErrorMessage(ddbs.ConnectionString, 0, null, "Ошибка отправки объявлений");
         }
     }
     while (jobs.Count() == 0)
         jobs.AddJobs(ddbs, 14);
 }
        public bool ToDB(string ConnectionString, bool sendanyway = false)
        {
                bool fl = false;
            lock(todblockobject)
            {
                DirtyApartments[] temp = null;
                //if(ap!=null)
                try
                {
                    bool fla = false;
                    lock (ap)
                    {
                        fla = (ap.Count > 20) || (sendanyway && (ap.Count > 0));
                    }
                    while (fla)
                    {
                        lock (ap)
                        {
                            Console.WriteLine("Надо отправить еще " + ap.Count + " объявлений");
                        }
                        int c = 0;
                        lock (ap)
                        {
                            c = ap.Count;
                        }
                        if (c > 150) c = 150;
                        temp = new DirtyApartments[c];
                        lock (ap)
                        {
                            for (int i = 0; i < c; i++)
                                temp[i] = ap[i];
                        }
                        Console.WriteLine("Начинаем отправку пачки из " + temp.Count() + " объявлений");

                        if (temp != null)
                            using (DataDBSerializer s = new DataDBSerializer(temp, true))
                            {
                                bool f = s.ToDB("ParsersData", ConnectionString);
                                while (!f)
                                {
                                    //ddbs.WriteErrorMessage(ddbs.ConnectionString, 0, null, "Ошибка отправки объявлений " + s.error);
                                    Console.WriteLine("Ну вот, объявления не отправились");
                                    f = s.ToDB("ParsersData", ConnectionString);
                                }
                                if (s.error != "" && f)
                                {
                                    Console.WriteLine("При отправке была ошибка, а все равно вернулось, что все объявления отправлены");
                                    //ddbs.WriteErrorMessage(ddbs.ConnectionString, 0, null, "При отправке была ошибка, а все равно вернулось, что все объявления отправлены " + s.error);
                                    f = false;
                                }
                                if (f)
                                {
                                    {
                                        lock (ap)
                                        {
                                            ap.RemoveAll(item => s.Contains(item));
                                            if (ap.Count == 0)
                                                ap.Clear();
                                        }
                                    }
                                    lock (ap)
                                    {
                                        fla = (ap.Count > 20) || (sendanyway && (ap.Count > 0));
                                    }
                                }
                                GC.SuppressFinalize(temp);
                            }
                    }
                    if (!fla)
                        fl = true;
                }
                catch (Exception e) { string se = e.Message; Console.WriteLine("Ошибка в модуле отправки объектов на 9 " + se); fl = false; }
                finally { if (temp != null) GC.SuppressFinalize(temp);  }
            }
            return fl;
        }
            public void ToDB()
            {
                lock (lock_)
                {
                    DataDBSerializer s = new DataDBSerializer(ap.ToArray(), true);
                    if (s.ToDB("ParsersData", ddbs.ConnectionString))
                        ap.RemoveAll(item => true);

                }
            }