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(); }
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); }
//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(); }