/// <summary>
        /// Добавление в очередь новых тасков
        /// </summary>
        /// <param name="s_out"></param>
        /// <returns>количество новых объектов, добавленных в глобальный список</returns>
        public int Create_New_Meas_Task(MeasTask s_out, string ActionType)
        {
            ClassesDBGetTasks cl = new ClassesDBGetTasks();
            ClassConvertTasks ts = new ClassConvertTasks();
            int NewIdMeasTask    = -1;

            try
            {
                if (s_out != null)
                {
                    //lock (GlobalInit.LIST_MEAS_TASK)
                    //UpdateListMeasTask();
                    MeasTask Data_ = s_out;
                    // создаём объект список подзадач типа MEAS_SUB_TASK и записываем в объект Data_
                    Data_.CreateAllSubTasks();
                    CoreICSM.Logs.CLogs.WriteInfo(ELogsWhat.Unknown, "[CreateAllSubTasks] success...");
                    // конвертируем объекты тасков с БД в список List<MEAS_TASK>
                    //List<MeasTask> mts_ = ts.ConvertTo_MEAS_TASKObjects(cl.ReadlAllSTasksFromDB()).ToList();
                    List <MeasTask> mts_ = GlobalInit.LIST_MEAS_TASK;
                    if (mts_.Find(r => r.Id.Value == Data_.Id.Value) == null)
                    {
                        if (((GlobalInit.LIST_MEAS_TASK.Find(j => j.Id.Value == Data_.Id.Value) == null)))
                        {
                            Data_.UpdateStatus(ActionType);
                            CoreICSM.Logs.CLogs.WriteInfo(ELogsWhat.Unknown, "Success UpdateStatus !!!...");
                            NewIdMeasTask = cl.SaveTaskToDB(Data_);
                            CoreICSM.Logs.CLogs.WriteInfo(ELogsWhat.Unknown, "Success create new TASK !!!...");
                            MeasTask fnd = GlobalInit.LIST_MEAS_TASK.Find(j => j.Id.Value == Data_.Id.Value);
                            if (fnd != null)
                            {
                                GlobalInit.LIST_MEAS_TASK.ReplaceAll <MeasTask>(fnd, Data_);
                            }
                            else
                            {
                                GlobalInit.LIST_MEAS_TASK.Add(Data_);
                            }
                        }
                        else
                        {
                            if (GlobalInit.LIST_MEAS_TASK.Find(j => j.Id.Value == Data_.Id.Value) != null)
                            {
                                Data_ = GlobalInit.LIST_MEAS_TASK.Find(j => j.Id.Value == Data_.Id.Value);
                                Data_.UpdateStatus(ActionType);
                                //cl.SaveStatusTaskToDB(Data_);
                                MeasTask fnd = GlobalInit.LIST_MEAS_TASK.Find(j => j.Id.Value == Data_.Id.Value);
                                if (fnd != null)
                                {
                                    GlobalInit.LIST_MEAS_TASK.ReplaceAll <MeasTask>(fnd, Data_);
                                }
                                else
                                {
                                    GlobalInit.LIST_MEAS_TASK.Add(Data_);
                                }
                            }
                        }
                    }
                    else
                    {
                        if (GlobalInit.LIST_MEAS_TASK.Find(j => j.Id.Value == Data_.Id.Value) != null)
                        {
                            Data_ = GlobalInit.LIST_MEAS_TASK.Find(j => j.Id.Value == Data_.Id.Value);
                            Data_.UpdateStatus();
                            //cl.SaveStatusTaskToDB(Data_);
                            MeasTask fnd = GlobalInit.LIST_MEAS_TASK.Find(j => j.Id.Value == Data_.Id.Value);
                            if (fnd != null)
                            {
                                GlobalInit.LIST_MEAS_TASK.ReplaceAll <MeasTask>(fnd, Data_);
                            }
                            else
                            {
                                GlobalInit.LIST_MEAS_TASK.Add(Data_);
                            }
                        }
                    }
                }
                CoreICSM.Logs.CLogs.WriteInfo(ELogsWhat.Unknown, "[Create_New_Meas_Task] success...");
            }
            catch (Exception er) {
                CoreICSM.Logs.CLogs.WriteError(ELogsWhat.Unknown, "[Create_New_Meas_Task]: " + er.Message);
            }
            cl.Dispose();
            ts.Dispose();
            return(NewIdMeasTask);
        }
        /// <summary>
        ///
        /// </summary>
        public static bool Process_Multy_Meas(MeasTask mt, List <int> SensorIds, string ActionType, bool isOnline)
        {
            bool isSendSuccess = false;

            try
            {
                ClassesDBGetTasks  cl        = new ClassesDBGetTasks();
                List <MeasSdrTask> Checked_L = new List <MeasSdrTask>();
                //Task tdf = new Task(() =>
                //{
                if (mt != null)
                {
                    List <MeasSdrTask> LM_SDR = new List <MeasSdrTask>();
                    foreach (int SensorId in SensorIds.ToArray())
                    {
                        Sensor fnd_s = GlobalInit.SensorListSDRNS.Find(t => t.Id.Value == SensorId);
                        if (fnd_s != null)
                        {
                            Task tsk = new Task(() =>
                            {
                                Checked_L.Clear();
                                if (GlobalInit.LIST_MEAS_TASK.Find(j => j.Id.Value == mt.Id.Value) != null)
                                {
                                    MeasTask M             = GlobalInit.LIST_MEAS_TASK.Find(j => j.Id.Value == mt.Id.Value);
                                    int Id_Old             = M.Id.Value;
                                    MeasSubTask[] msbd_old = M.MeasSubTasks;
                                    M          = mt;
                                    M.Id.Value = Id_Old;
                                    if (M.Stations.ToList().FindAll(e => e.StationId.Value == SensorId) != null)
                                    {
                                        M.UpdateStatusSubTasks(SensorId, ActionType, isOnline);
                                        LM_SDR = M.CreateeasTaskSDRs(ActionType);

                                        //if (isCreateTasksSdr == false) {  LM_SDR = M.CreateeasTaskSDRs(ActionType); }
                                        if (LM_SDR != null)
                                        {
                                            string ids = "";
                                            int MaxVal = cl.GetMaXIdsSdrTasks(M);
                                            int idx    = MaxVal + 1;
                                            foreach (MeasSdrTask mx in LM_SDR.ToArray())
                                            {
                                                mx.Id = idx;
                                                ids   = idx.ToString() + ";";
                                                //Task ts = new Task(() => {
                                                //если сенсор активен
                                                //if (fnd_s.Status == "A")
                                                //{
                                                if (mx.SensorId.Value == SensorId)
                                                {
                                                    /// Перед отправкой включаем валидацию созданных объектов MeasTaskSDR
                                                    if (mx.ValidationMeas())
                                                    {
                                                        Checked_L.Add(mx);
                                                        M.UpdateStatus(ActionType);
                                                    }
                                                    else
                                                    {
                                                        // если вадидация не прошла
                                                        M.UpdateStatusE_E(mx.MeasSubTaskStationId, "E_E");
                                                        M.UpdateStatus(ActionType);
                                                        //обновление группы статусов для объекта MeasTask
                                                        cl.SaveStatusTaskToDB(M);
                                                    }
                                                }
                                                idx++;
                                            }
                                            if (ids.Length > 0)
                                            {
                                                ids = ids.Remove(ids.Count() - 1, 1);
                                            }
                                            cl.SaveIdsSdrTasks(M, ids);
                                        }
                                    }

                                    M.MeasSubTasks = msbd_old;
                                    MeasTask fnd   = GlobalInit.LIST_MEAS_TASK.Find(j => j.Id.Value == Id_Old);
                                    if (fnd != null)
                                    {
                                        GlobalInit.LIST_MEAS_TASK.ReplaceAll <MeasTask>(fnd, M);
                                    }
                                    else
                                    {
                                        GlobalInit.LIST_MEAS_TASK.Add(M);
                                    }
                                    if (ActionType == "Del")
                                    {
                                        GlobalInit.LIST_MEAS_TASK.RemoveAll(t => t.Id.Value == M.Id.Value);
                                    }
                                }
                            });
                            tsk.Start();
                            tsk.Wait();


                            if (Checked_L.Count > 0)
                            {
                                CoreICSM.Logs.CLogs.WriteInfo(ELogsWhat.Unknown, "--> Start busManager send new task...");
                                BusManager <List <MeasSdrTask> > busManager = new BusManager <List <MeasSdrTask> >();
                                if (busManager.SendDataObject(Checked_L, GlobalInit.Template_MEAS_TASK_Main_List_APPServer + fnd_s.Name + fnd_s.Equipment.TechId, XMLLibrary.BaseXMLConfiguration.xml_conf._TimeExpirationTask.ToString()))
                                {
                                    isSendSuccess = true;
                                    CoreICSM.Logs.CLogs.WriteInfo(ELogsWhat.Unknown, "--> Success send new task...");
                                }
                                else
                                {
                                    isSendSuccess = false;
                                    //Sheduler_Send_MeasSdr shed = new Sheduler_Send_MeasSdr();
                                    //если отправка не получилась - пытаемся отправить сообщение через 1 минуту
                                    //shed.ShedulerRepeatStart(60, mt, SensorIds, ActionType, isOnline);
                                }

                                // Отправка сообщения в СТОП-ЛИСТ
                                if ((ActionType == "Stop") && (isOnline) && ((Checked_L[0].status == "F") || (Checked_L[0].status == "P")))
                                {
                                    if (busManager.SendDataObject(Checked_L, GlobalInit.Template_MEAS_TASK_Stop_List + fnd_s.Name + fnd_s.Equipment.TechId + Checked_L[0].MeasTaskId.Value.ToString() + Checked_L[0].SensorId.Value.ToString(), XMLLibrary.BaseXMLConfiguration.xml_conf._TimeExpirationTask.ToString()))
                                    {
                                        isSendSuccess = true;
                                    }
                                }
                                else
                                {
                                    //busManager.DeleteQueue(GlobalInit.Template_MEAS_TASK_Stop_List + fnd_s.Name + fnd_s.Equipment.TechId + Checked_L[0].MeasTaskId.Value.ToString() + Checked_L[0].SensorId.Value.ToString());
                                }
                            }
                            Checked_L.Clear();
                        }
                    }
                    //});
                    //tsk.Start();
                    //tsk.Wait();
                }


                //cl.Dispose();
                //});
                //tdf.Start();
                //tdf.Wait();
            }
            catch (Exception ex)
            {
                CoreICSM.Logs.CLogs.WriteError(ELogsWhat.Unknown, "[Process_Multy_Meas]: " + ex.Message);
            }
            return(isSendSuccess);
        }