public void UpdateListMeasTask()
        {
            ClassConvertTasks ts   = new ClassConvertTasks();
            ClassesDBGetTasks cl   = new ClassesDBGetTasks();
            List <MeasTask>   mts_ = ts.ConvertTo_MEAS_TASKObjects(cl.ReadlAllSTasksFromDB()).ToList();

            foreach (MeasTask FND in mts_.ToArray())
            {
                // Удаляем данные об объекте с глобального списка
                if (GlobalInit.LIST_MEAS_TASK.Find(j => j.Id.Value == FND.Id.Value) == null)
                {
                    GlobalInit.LIST_MEAS_TASK.Add(FND);
                }
                else
                {
                    //lock (GlobalInit.LIST_MEAS_TASK)
                    if ((FND.Status != null) && (FND.Status != "N"))
                    {
                        MeasTask fnd = GlobalInit.LIST_MEAS_TASK.Find(j => j.Id.Value == FND.Id.Value);
                        if (fnd != null)
                        {
                            GlobalInit.LIST_MEAS_TASK.ReplaceAll <MeasTask>(fnd, FND);
                        }
                        else
                        {
                            GlobalInit.LIST_MEAS_TASK.Add(FND);
                        }
                    }
                }
            }
            ts.Dispose();
            cl.Dispose();
        }
示例#2
0
        void IAppServerComponent.Activate()
        {
            BaseXMLConfiguration xml_conf = new BaseXMLConfiguration();

            GlobalInit.Initialization();
            ClassesDBGetResult       DbGetRes = new ClassesDBGetResult();
            ClassConvertToSDRResults conv     = new ClassConvertToSDRResults();
            ///
            // Начальная инициализация (загрузка конфигурационных данных)

            /*
             * Task tt = new Task(() => {
             *  System.Threading.Thread.CurrentThread.Priority = System.Threading.ThreadPriority.Normal;
             *      if (GlobalInit.LST_MeasurementResults.Count == 0) {
             *          MeasurementResults[] msResltConv = conv.ConvertTo_SDRObjects(DbGetRes.ReadlAllResultFromDB());
             *          if (msResltConv != null) {
             *              foreach (MeasurementResults inb in msResltConv.ToArray()) {
             *                  GlobalInit.LST_MeasurementResults.Add(inb);
             *              }
             *          }
             *      }
             * });
             * tt.Start();
             * tt.Wait();
             */

            Task tsg = new Task(() => {
                ClassesDBGetTasks cl = new ClassesDBGetTasks();
                ClassConvertTasks ts = new ClassConvertTasks();
                List <MeasTask> mts_ = ts.ConvertTo_MEAS_TASKObjects(cl.ReadlAllSTasksFromDB()).ToList();
                foreach (MeasTask mtsd in mts_.ToArray())
                {
                    if (((GlobalInit.LIST_MEAS_TASK.Find(j => j.Id.Value == mtsd.Id.Value) == null)))
                    {
                        MeasTask fnd = GlobalInit.LIST_MEAS_TASK.Find(j => j.Id.Value == mtsd.Id.Value);
                        if (fnd != null)
                        {
                            GlobalInit.LIST_MEAS_TASK.ReplaceAll <MeasTask>(fnd, mtsd);
                        }
                        else
                        {
                            GlobalInit.LIST_MEAS_TASK.Add(mtsd);
                        }
                    }
                }
                cl.Dispose();
                ts.Dispose();
            });

            tsg.Start();



            Sheduler_Up_Meas_SDR_Results Sc_Up_Meas_SDR = new Sheduler_Up_Meas_SDR_Results(); Sc_Up_Meas_SDR.ShedulerRepeatStart(BaseXMLConfiguration.xml_conf._TimeUpdateMeasResult);

            ShedulerReceiveStatusMeastaskSDR sc = new ShedulerReceiveStatusMeastaskSDR();

            sc.ShedulerRepeatStart(BaseXMLConfiguration.xml_conf._TimeUpdateMeasTaskStatus);


            ShedulerCheckActivitySensor CheckActivitySensor = new ShedulerCheckActivitySensor();

            CheckActivitySensor.ShedulerRepeatStart(BaseXMLConfiguration.xml_conf._RescanActivitySensor);

            ShedulerGetMeasTask getMeasTask = new ShedulerGetMeasTask(); getMeasTask.ShedulerRepeatStart(20);


            //Sheduler_ArchiveSDRResults arch_sdrRes = new Sheduler_ArchiveSDRResults(); arch_sdrRes.ShedulerRepeatStart(BaseXMLConfiguration.xml_conf._TimeArchiveResult);

            ShedulerCheckStart Quartz = new ShedulerCheckStart();

            Quartz.ShedulerRepeatStart(BaseXMLConfiguration.xml_conf._ReloadStart);
        }
        /// <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);
        }
示例#4
0
            //ClassConvertTasks ts = new ClassConvertTasks();
            void IJob.Execute(IJobExecutionContext context)
            {
                //foreach (IDisposable d in GlobalInit.Lds_Activity_MEAS_TASK_SDR_Main_List_SDR) d.SafeDispose();
                //Task stx = new Task(() =>
                //{
                try
                {
                    BusManager <List <MeasSdrTask> > busManager = new BusManager <List <MeasSdrTask> >();
                    foreach (Sensor s in GlobalInit.SensorListSDRNS.ToArray())
                    {
                        if (ClassStaticBus.bus.Advanced.IsConnected)
                        {
                            uint cnt = busManager.GetMessageCount(GlobalInit.Template_MEAS_TASK_SDR_Main_List_SDR + s.Name + s.Equipment.TechId);
                            for (int i = 0; i < cnt; i++)
                            {
                                var message = busManager.GetDataObject(GlobalInit.Template_MEAS_TASK_SDR_Main_List_SDR + s.Name + s.Equipment.TechId);
                                if (message != null)
                                {
                                    List <MeasSdrTask> fnd_s = message as List <MeasSdrTask>;
                                    if (fnd_s != null)
                                    {
                                        foreach (MeasSdrTask h in fnd_s)
                                        {
                                            if (h.MeasTaskId != null)
                                            {
                                                MeasTask tsk = GlobalInit.LIST_MEAS_TASK.Find(t => t.Id.Value == h.MeasTaskId.Value);
                                                if (tsk != null)
                                                {
                                                    tsk.Status = h.status;
                                                    cl.SaveStatusTaskToDB(tsk);
                                                }
                                            }
                                        }
                                    }
                                }
                                else
                                {
                                    break;
                                }
                            }

                            /*
                             *  GlobalInit.Lds_Activity_MEAS_TASK_SDR_Main_List_SDR.Add(ClassStaticBus.bus.Receive(GlobalInit.Template_MEAS_TASK_SDR_Main_List_SDR + s.Name + s.Equipment.TechId, x => x
                             *  .Add<List<MeasSdrTask>>(message =>
                             *  {
                             *      List<MeasSdrTask> fnd_s = message;
                             *      if (fnd_s != null)
                             *      {
                             *          foreach (MeasSdrTask h in fnd_s)
                             *          {
                             *              if (h.MeasTaskId != null)
                             *              {
                             *                  MeasTask tsk = GlobalInit.LIST_MEAS_TASK.Find(t => t.Id.Value == h.MeasTaskId.Value);
                             *                  if (tsk != null)
                             *                  {
                             *                      tsk.Status = h.status;
                             *                      cl.SaveStatusTaskToDB(tsk);
                             *                  }
                             *              }
                             *          }
                             *      }
                             *  })));
                             */
                        }
                        else
                        {
                            ClassStaticBus.bus.Dispose();
                            GC.SuppressFinalize(ClassStaticBus.bus);
                            ClassStaticBus.bus = RabbitHutch.CreateBus(GlobalInit.MainRabbitMQServices);
                            CoreICSM.Logs.CLogs.WriteInfo(CoreICSM.Logs.ELogsWhat.Unknown, "-> Bus dispose... ");
                        }
                    }
                    CoreICSM.Logs.CLogs.WriteInfo(CoreICSM.Logs.ELogsWhat.Unknown, "ShedulerGetMeasTask ");
                }
                catch (Exception ex)
                {
                    CoreICSM.Logs.CLogs.WriteError(CoreICSM.Logs.ELogsWhat.Unknown, "ShedulerGetMeasTask " + ex.Message);
                }
                cl.Dispose();
                //});
                //stx.Start();
                //stx.Wait();
                System.GC.Collect();
            }