private static string[][] RedJobsSub(DataDBAsynchService ddbs)
        {
            //Console.WriteLine(DateTime.Now.ToLongTimeString() + " Начали получать расшифровку заданий");
            List<string[]> jobs = null;
            string SQLstr = "";
            try
            {
                SQLstr =
                    //"begin tran tran1; "+
                    //"SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED; "+
                    "select pj.ParserName, pj.id parser_id, am.[ID], am.[Address],am.[Sticker],[Encoding],[IpProxy],[PortProxy],[WebPreAuthentificationPage] "
                + ",[WebAuthentificationPage],[WebConnectionString],[Site],[Source],[PathForPhoto], DelayFrom, DelayTo, ap.id "
                + "from AddressesMask am with(xlock) "
                + "inner join PjobStat pj "
                + "on pj.ID=am.JobID "
                    //+ "inner join AddressesParsing ap with(xlock) "
                + "inner join AddressesParsingStart ap "
                + "with(xlock) on ap.Address_ref=am.id "
                + " where ap.id not in(select AddressStart_Ref from AddressesParsingFinish) and ap.Host_Ref= " + GetHostRef(ddbs);
                //+"; commit tran tran1;";
                //+ " order by  pj.ParserName";
                lock(DataDBAsynchService.db_lock)
                using(SqlConnection sc =ddbs.GetDBCon(ddbs.ConnectionString))
                try
                {
                using(SqlCommand SQLCmd = new SqlCommand(SQLstr, sc))
                    try
                    {
                        SQLCmd.CommandTimeout = 29;
                        using (SqlDataReader MydataReader2 = SQLCmd.ExecuteReader())
                            try
                            {
                                if (MydataReader2 != null)
                                    if (MydataReader2.HasRows)
                                        try
                                        {
                                            jobs = new List<string[]>();
                                            object o0 = "";
                                            //if (MydataReader2.HasRows)
                                            while (MydataReader2.Read())
                                            {
                                                string[] job = new string[17];
                                                //Console.WriteLine(DateTime.Now.ToLongTimeString() + " Считали строку расшифровки");
                                                try
                                                {
                                                    if (MydataReader2.FieldCount == 17)
                                                    {

                                                        if (MydataReader2.IsDBNull(0))
                                                            o0 = "";
                                                        else
                                                            o0 = MydataReader2.GetSqlString(0).ToString();
                                                        /*Array.Resize(ref job, 1);*/
                                                        job[0] = (string)o0; //[ID]
                                                        ///*Array.Resize(ref job, 1);*/ job[0] = "70";

                                                        if (MydataReader2.IsDBNull(1))
                                                            o0 = "0";
                                                        else
                                                            o0 = MydataReader2.GetInt32(1).ToString();
                                                        /*Array.Resize(ref job, 2);*/
                                                        job[1] = (string)o0;//[ParserJobID]
                                                        ///*Array.Resize(ref job, 2);*/ job[1] = "GilcomGotovoeDataCollector";

                                                        if (MydataReader2.IsDBNull(2))
                                                            o0 = "0";
                                                        else
                                                            o0 = MydataReader2.GetInt32(2).ToString();
                                                        /*Array.Resize(ref job, 3);*/
                                                        job[2] = (string)o0;//[AddressMaskID]
                                                        ///*Array.Resize(ref job, 2);*/ job[1] = "GilcomGotovoeDataCollector";

                                                        if (MydataReader2.IsDBNull(3))
                                                            o0 = "";
                                                        else
                                                            o0 = MydataReader2.GetSqlString(3).ToString();
                                                        /*Array.Resize(ref job, 4);*/
                                                        job[3] = (string)o0;//[Encoding]
                                                        ///*Array.Resize(ref job, 3);*/ job[2] = "UTF8";

                                                        if (MydataReader2.IsDBNull(4))
                                                            o0 = "";
                                                        else
                                                            o0 = MydataReader2.GetSqlString(4).ToString();
                                                        /*Array.Resize(ref job, 5);*/
                                                        job[4] = (string)o0;


                                                        if (MydataReader2.IsDBNull(5))
                                                            o0 = "";
                                                        else
                                                            o0 = MydataReader2.GetSqlString(5).ToString();
                                                        /*Array.Resize(ref job, 6);*/
                                                        job[5] = (string)o0;

                                                        if (MydataReader2.IsDBNull(6))
                                                            o0 = "";
                                                        else
                                                            o0 = MydataReader2.GetSqlString(6).ToString();
                                                        /*Array.Resize(ref job, 7);*/
                                                        job[6] = (string)o0;

                                                        if (MydataReader2.IsDBNull(7))
                                                            o0 = "0";
                                                        else
                                                            o0 = MydataReader2.GetInt32(7).ToString();
                                                        /*Array.Resize(ref job, 8);*/
                                                        job[7] = (string)o0;

                                                        if (MydataReader2.IsDBNull(8))
                                                            o0 = "";
                                                        else
                                                            o0 = MydataReader2.GetSqlString(8).ToString();
                                                        /*Array.Resize(ref job, 9);*/
                                                        job[8] = (string)o0;

                                                        if (MydataReader2.IsDBNull(9))
                                                            o0 = "";
                                                        else
                                                            o0 = MydataReader2.GetSqlString(9).ToString();
                                                        /*Array.Resize(ref job, 10);*/
                                                        job[9] = (string)o0;

                                                        if (MydataReader2.IsDBNull(10))
                                                            o0 = "";
                                                        else
                                                            o0 = MydataReader2.GetSqlString(10).ToString();
                                                        /*Array.Resize(ref job, 11);*/
                                                        job[10] = (string)o0;

                                                        if (MydataReader2.IsDBNull(11))
                                                            o0 = "";
                                                        else
                                                            o0 = MydataReader2.GetSqlString(11).ToString();
                                                        /*Array.Resize(ref job, 12);*/
                                                        job[11] = (string)o0;

                                                        if (MydataReader2.IsDBNull(12))
                                                            o0 = "";
                                                        else
                                                            o0 = MydataReader2.GetSqlString(12).ToString();
                                                        /*Array.Resize(ref job, 13);*/
                                                        job[12] = (string)o0;

                                                        if (MydataReader2.IsDBNull(13))
                                                            o0 = "";
                                                        else
                                                            o0 = MydataReader2.GetSqlString(13).ToString();
                                                        /*Array.Resize(ref job, 14);*/
                                                        job[13] = (string)o0;

                                                        if (MydataReader2.IsDBNull(14))
                                                            o0 = "0";
                                                        else
                                                            o0 = MydataReader2.GetInt32(14).ToString();
                                                        /*Array.Resize(ref job, 15);*/
                                                        job[14] = (string)o0;

                                                        if (MydataReader2.IsDBNull(15))
                                                            o0 = "0";
                                                        else
                                                            o0 = MydataReader2.GetInt32(15).ToString();
                                                        /*Array.Resize(ref job, 16);*/
                                                        job[15] = (string)o0;


                                                        if (MydataReader2.IsDBNull(16))
                                                            o0 = "0";
                                                        else
                                                            o0 = MydataReader2.GetInt32(16).ToString();
                                                        /*Array.Resize(ref job, 17);*/
                                                        job[16] = (string)o0;
                                                        /*if (MydataReader2.IsDBNull(14))
                                                            o0 = "0";
                                                        else
                                                            o0 = MydataReader2.GetSqlString(14).ToString();
                                                        /*Array.Resize(ref job, 15);*/
                                                        //job[14] = (string)o0;

                                                        //Array.Resize(ref jobs, jobs.Count() + 1);
                                                        jobs.Add(job);
                                                    }
                                                }
                                                catch (SystemException exx)
                                                {
                                                    SQLCmd.Cancel();
                                                    if (o0 != null)
                                                    {
                                                        Console.WriteLine("Ошибка четния задания2. " + exx.Message + " получено " + o0.ToString());
                                                        ddbs.WriteErrorMessage(ddbs.ConnectionString, 0, null, "Ошибка четния задания2 " + SQLstr + ". " + exx.Message + " получено " + o0.ToString());
                                                    }
                                                    else
                                                    {
                                                        Console.WriteLine("Ошибка четния задания2 " + exx.Message + " получено null");
                                                        ddbs.WriteErrorMessage(ddbs.ConnectionString, 0, null, "Ошибка четния задания2 " + exx.Message + " получено null");
                                                    }
                                                }
                                                finally
                                                { 
                                                        GC.SuppressFinalize(job);                                                
                                                }
                                            }
                                            /*else
                                            {
                                                Console.WriteLine("Запрос вернул 0 строк. Вроде. Или HasRows косячит");
                                            }*/
                                        }
                                        catch (Exception ex)
                                        {
                                            SQLCmd.Cancel();
                                            Console.WriteLine("Ошибка четния задания1 " + ex.Message);
                                            ddbs.WriteErrorMessage(ddbs.ConnectionString, 0, null, "Ошибка четния задания1 " + ex.Message);
                                        }
                            }
                            catch { }
                            finally
                            {
                                if (MydataReader2 != null)
                                {
                                    if (!MydataReader2.IsClosed)
                                        MydataReader2.Close();
                                    MydataReader2.Dispose();
                                    GC.SuppressFinalize(MydataReader2);
                                }
                            }
                    }
                    catch (Exception ex)
                    {
                        SQLCmd.Cancel();
                        Console.WriteLine("Ошибка четния задания3 " + ex.Message);
                        //ddbs.WriteErrorMessage(ddbs.ConnectionString, 0, null, "Ошибка четния задания3 " + ex.Message);
                        //return null;
                    }
                    finally
                    {
                        SQLCmd.Dispose();
                        GC.SuppressFinalize(SQLCmd);
                    }
                }
                catch (Exception ex)
                {
                    Console.WriteLine("Ошибка четния задания4 " + ex.Message);
                    ddbs.WriteErrorMessage(ddbs.ConnectionString, 0, null, "Ошибка четния задания4 " + ex.Message);
                    //return null;
                }
                finally
                {
                    if (sc != null)
                    {
                        if(sc.State!= System.Data.ConnectionState.Closed)
                            sc.Close();
                        sc.Dispose();
                        GC.SuppressFinalize(sc);
                    }
                }
            }
            catch (SystemException ex)
            {
                ddbs.WriteErrorMessage(ddbs.ConnectionString, 0, null, "Ошибка четния задания "  + ". " + ex.Message);
                //return null;
            }
            finally
            {
                //GC.Collect();
                if (jobs!=null)
                    Console.WriteLine(DateTime.Now.ToLongTimeString() + " Закончили получать задания. Получили: " + jobs.Count());
                else
                    Console.WriteLine(DateTime.Now.ToLongTimeString() + " Закончили получать задания. Но не получили(");
            }
            /*List<string[]> jobs_ret = new List<string[]>(jobs.Count());
            for (int i = 0; i < 10; i++)
                for (int j = 0; j <= jobs.Count() / 10;j++ )
                    if (10 * j + i < jobs.Count())
                        jobs_ret.Add(jobs[10 * j + i]);*/
            string[][] jobs_ = null;
            if (jobs != null)
            {
                if (jobs.Any())
                {
                    try
                    {
                        jobs_ = new string[jobs.Count][];
                        for (int i = 0; i < jobs.Count; i++)
                        {
                            jobs_[i] = jobs[i];
                            GC.SuppressFinalize(jobs[i]);
                        }
                        jobs.Clear();
                    }
                    catch { Console.WriteLine("Произошла ошибка в финальной обработке заданий"); }
                    finally
                    {
                        GC.SuppressFinalize(jobs);
                    }
                }
            }
            return jobs_;
        }
 public void SetPhones(DataDBAsynchService ddbs, ref DirtyApartments da)
 {
     if (da != null)
     {
         try
         {
             string SQLstr =
                     "select Телефон1, Телефон2, Телефон3, Телефон4 from MasksPhones pm inner join AddressesParsing ap on ap.Address_ref=pm.Address_Ref where ap.id=" + _addressparsing;
             using(SqlConnection conn = ddbs.GetDBCon(ddbs.ConnectionString))
             try
             {
                 SqlCommand SQLCmd = new SqlCommand(SQLstr, conn);
                 using (SqlDataReader MydataReader2 = SQLCmd.ExecuteReader())
                 {
                     if (MydataReader2.HasRows)
                     {
                         while (MydataReader2.Read())
                         {
                             if (MydataReader2.IsDBNull(0))
                                 da.Телефон1 = null;
                             else
                                 da.Телефон1 = MydataReader2.GetSqlString(0).ToString();
                             if (MydataReader2.IsDBNull(1))
                                 da.Телефон2 = null;
                             else
                                 da.Телефон2 = MydataReader2.GetSqlString(1).ToString();
                             if (MydataReader2.IsDBNull(2))
                                 da.Телефон3 = null;
                             else
                                 da.Телефон3 = MydataReader2.GetSqlString(2).ToString();
                             if (MydataReader2.IsDBNull(3))
                                 da.Телефон4 = null;
                             else
                                 da.Телефон4 = MydataReader2.GetSqlString(3).ToString();
                         }
                     }
                     MydataReader2.Close();
                 }                        
             }
             catch (Exception ex) { Console.WriteLine(ex.Message); }
             finally
             { conn.Close(); conn.Dispose(); }
             }
         catch (Exception ex)
         {
             ddbs.WriteErrorMessage(ddbs.ConnectionString, 0, da.Ссылка, "Ошибка получения телефонов по троечке: " + ex.Message, _addressparsing);
         }
     }
 }