/// <summary> /// Реализация интерфейса 'IDataHost' - принять сообщение /// </summary> /// <param name="res">Объект с принятым сообщением</param> public void OnEvtDataRecievedHost(object res) { HHandlerQueue.StatesMachine stateMashine = (HHandlerQueue.StatesMachine)(res as object[])[0]; try { switch (stateMashine) { case HHandlerQueue.StatesMachine.UDP_DEBUG: m_SetupDebug.m_Turn = bool.Parse((string)((res as object[])[1] as object[])[0]); m_SetupDebug.m_tsIntervalSeries = new HTimeSpan((string)((res as object[])[1] as object[])[1]).Value; state |= STATE.DEBUG; break; case HHandlerQueue.StatesMachine.UDP_LISTENER: m_Server = //new IPEndPoint(IPAddress.Parse((string)((res as object[])[1] as object[])[0]), (int)(res as object[])[1] ; break; case HHandlerQueue.StatesMachine.UDP_CONNECTED_CHANGE: if ((bool)(res as object[])[1] == true) { connect(); } else { disconnect(); } break; case HHandlerQueue.StatesMachine.XML_PACKAGE_VERSION: _versionXMLPackage = (string)(res as object[])[1]; DataAskedHost(new object[] { new object[] { HHandlerQueue.StatesMachine.XML_PACKAGE_TEMPLATE, _versionXMLPackage } }); state |= STATE.XML_VERSION; break; case HHandlerQueue.StatesMachine.XML_PACKAGE_TEMPLATE: s_packageTemplate = (XmlDocument)(res as object[])[1]; state |= STATE.XML_TEMPLATE; break; default: break; } } catch (Exception e) { Logging.Logg().Exception(e , string.Format(@"Обработка принятого сообщения по интерфесу 'IDataHost' событие={0}...", state.ToString()) , Logging.INDEX_MESSAGE.NOT_SET); } }
/// <summary> /// Обработчик события - сообщение от обработчика очереди событий /// (обратная связь с обработчиком очереди событий) /// </summary> /// <param name="obj">Объект - параметр(аргумент) события</param> private void onHandlerMainQueue(object obj) { HHandlerQueue.StatesMachine state = (HHandlerQueue.StatesMachine)(obj as object[])[0]; // анонимная функция для выполнения в контексте формы DelegateBoolFunc connectedChanged = delegate(bool bConnected) { имитацияпакетодинToolStripMenuItem.Enabled = имитацияпакетциклToolStripMenuItem.Enabled = m_cbxReadSessionStart.Checked = bConnected; m_cbxReadSessionStop.Checked = !m_cbxReadSessionStart.Checked; }; Logging.Logg().Debug(MethodBase.GetCurrentMethod() , string.Format(@"получено сообщение state={0} от обработчика очереди событий", state.ToString()) , Logging.INDEX_MESSAGE.NOT_SET); switch (state) { case HHandlerQueue.StatesMachine.UDP_CONNECTED_CHANGED: // выполнить анонимный метод Invoke(new DelegateBoolFunc(connectedChanged), (bool)(obj as object[])[1]); break; case HHandlerQueue.StatesMachine.UDP_LISTENER_PACKAGE_RECIEVED: m_handlerPackage.Push(null, new object [] { new object[] { new object [] { PackageHandlerQueue.StatesMachine.NEW, (obj as object[])[1], (obj as object[])[2] } } }); break; case HHandlerQueue.StatesMachine.LIST_DEST: BeginInvoke(new DelegateObjectFunc(fillDestList), (obj as object[])[1]); // запуск, активация обработчика очереди событий при записи значений в БД m_handlerWriter.Push(null, new object [] { new object[] { new object [] { WriterHandlerQueue.StatesMachine.LIST_DEST, (obj as object[])[1] } } }); break; default: break; } }
public void OnEvtDataRecievedHost(object res) { HHandlerQueue.StatesMachine stateMashine = (HHandlerQueue.StatesMachine)(res as object[])[0]; try { switch (stateMashine) { case HHandlerQueue.StatesMachine.NUDP_LISTENER: m_iNPort = (int)(res as object[])[1]; break; case HHandlerQueue.StatesMachine.UDP_CONNECTED_CHANGE: if ((bool)(res as object[])[1] == true) { connect(); } else { disconnect(); } break; case HHandlerQueue.StatesMachine.XML_PACKAGE_VERSION: _versionXMLPackage = (string)(res as object[])[1]; // запросить номер порта, шаблон пакета(м номером версии) DataAskedHost(new object[] { new object[] { HHandlerQueue.StatesMachine.XML_PACKAGE_TEMPLATE, _versionXMLPackage } }); break; case HHandlerQueue.StatesMachine.XML_PACKAGE_TEMPLATE: s_packageTemplate = (XmlDocument)(res as object[])[1]; state |= STATE.XML_TEMPLATE; break; default: break; } } catch (Exception e) { Logging.Logg().Exception(e , string.Format(@"Обработка принятого сообщения по интерфесу 'IDataHost' событие={0}...", state.ToString()) , Logging.INDEX_MESSAGE.NOT_SET); } }
/// <summary> /// Обработчик события 'EvtDataAskedHost' от панелей (источник, назначение) /// </summary> /// <param name="obj">Параметр для передачи-массив (0-панель, 1-индекс группы источников, 2-индекс группы сигналов)</param> private void onEvtDataAskedPanelWork_PanelLoader(object par) { object [] pars = (par as EventArgsDataHost).par[0] as object []; //Массив параметров для передачи object[] arObjToDataHost = new object [] { }; //Событие для постановки в очередь обработки событий HHandlerQueue.StatesMachine state = HHandlerQueue.StatesMachine.UNKNOWN; //Определить панель-инициатор сообщения INDEX_SRC indxWork = (INDEX_SRC)this.Controls.GetChildIndex(pars[(int)PanelLoader.INDEX_PREPARE_PARS.OBJ] as PanelLoader); switch ((KEY_EVENT)pars[(int)PanelLoader.INDEX_PREPARE_PARS.KEY_EVT]) { case KEY_EVENT.SELECTION_CHANGED: switch (indxWork) { case INDEX_SRC.SOURCE: switch ((PanelLoader.KEY_CONTROLS)pars[(int)PanelLoader.INDEX_PREPARE_PARS.KEY_OBJ]) { case PanelLoader.KEY_CONTROLS.DGV_GROUP_SOURCES: state = HHandlerQueue.StatesMachine.OBJ_SRC_GROUP_SOURCES; arObjToDataHost = new object[] { new object[] { (int)state, pars[(int)PanelLoader.INDEX_PREPARE_PARS.ID_OBJ_SEL] } }; break; case PanelLoader.KEY_CONTROLS.DGV_GROUP_SIGNALS: //state = ; arObjToDataHost = new object[] { new object[] { (int)HHandlerQueue.StatesMachine.OBJ_SRC_GROUP_SIGNALS_PARS , indxWork , (string)pars[(int)PanelLoader.INDEX_PREPARE_PARS.ID_OBJ_SEL] , (string)pars[(int)PanelLoader.INDEX_PREPARE_PARS.DEPENDENCED_DATA] } , new object[] { (int)HHandlerQueue.StatesMachine.OBJ_SRC_GROUP_SIGNALS , indxWork , (string)pars[(int)PanelLoader.INDEX_PREPARE_PARS.DEPENDENCED_DATA] } }; break; case PanelLoader.KEY_CONTROLS.CBX_SOURCE_OF_GROUP: state = HHandlerQueue.StatesMachine.SET_IDCUR_SOURCE_OF_GROUP; arObjToDataHost = new object[] { new object[] { (int)state , indxWork , (string)pars[(int)PanelLoader.INDEX_PREPARE_PARS.ID_OBJ_SEL] , (string)pars[(int)PanelLoader.INDEX_PREPARE_PARS.DEPENDENCED_DATA] } }; break; case PanelLoader.KEY_CONTROLS.TBX_GROUPSOURCES_ADDING: //case PanelLoader.KEY_CONTROLS.TBX_GROUPSIGNALS_ADDING: state = HHandlerQueue.StatesMachine.SET_TEXT_ADDING; arObjToDataHost = new object[] { new object[] { (int)state , indxWork , (string)pars[(int)PanelLoader.INDEX_PREPARE_PARS.ID_OBJ_SEL] , (string)pars[(int)PanelLoader.INDEX_PREPARE_PARS.DEPENDENCED_DATA] } }; break; case PanelLoader.KEY_CONTROLS.GROUP_BOX_GROUP_SIGNALS: state = HHandlerQueue.StatesMachine.SET_GROUP_SIGNALS_PARS; arObjToDataHost = new object[] { new object[] { (int)state , indxWork , (string)(pars[(int)PanelLoader.INDEX_PREPARE_PARS.ID_OBJ_SEL]) , (GROUP_SIGNALS_PARS)pars[(int)PanelLoader.INDEX_PREPARE_PARS.DEPENDENCED_DATA] } }; break; case PanelLoader.KEY_CONTROLS.RBUTTON_CUR_DATETIME: case PanelLoader.KEY_CONTROLS.RBUTTON_COSTUMIZE: state = HHandlerQueue.StatesMachine.GET_GROUP_SIGNALS_DATETIME_PARS; arObjToDataHost = new object[] { new object[] { (int)state , indxWork , (string)(pars[(int)PanelLoader.INDEX_PREPARE_PARS.ID_OBJ_SEL]) , (string)(pars[(int)PanelLoader.INDEX_PREPARE_PARS.DEPENDENCED_DATA] as object [])[0] //Строковый идентификатор группы сигналов , (MODE_WORK)(pars[(int)PanelLoader.INDEX_PREPARE_PARS.DEPENDENCED_DATA] as object [])[1] //MODE_WORK } }; break; default: break; } break; case INDEX_SRC.DEST: switch ((PanelLoader.KEY_CONTROLS)pars[(int)PanelLoader.INDEX_PREPARE_PARS.KEY_OBJ]) { case PanelLoader.KEY_CONTROLS.DGV_GROUP_SOURCES: state = HHandlerQueue.StatesMachine.OBJ_DEST_GROUP_SOURCES; arObjToDataHost = new object[] { new object[] { (int)state, pars[(int)PanelLoader.INDEX_PREPARE_PARS.ID_OBJ_SEL] } }; break; case PanelLoader.KEY_CONTROLS.DGV_GROUP_SIGNALS: //state = ; arObjToDataHost = new object[] { new object[] { (int)HHandlerQueue.StatesMachine.OBJ_DEST_GROUP_SIGNALS_PARS , indxWork , (string)pars[(int)PanelLoader.INDEX_PREPARE_PARS.ID_OBJ_SEL] , (string)pars[(int)PanelLoader.INDEX_PREPARE_PARS.DEPENDENCED_DATA] } , new object[] { (int)HHandlerQueue.StatesMachine.OBJ_DEST_GROUP_SIGNALS , indxWork , (string)pars[(int)PanelLoader.INDEX_PREPARE_PARS.DEPENDENCED_DATA] } }; break; case PanelLoader.KEY_CONTROLS.CBX_SOURCE_OF_GROUP: state = HHandlerQueue.StatesMachine.SET_IDCUR_SOURCE_OF_GROUP; arObjToDataHost = new object[] { new object[] { (int)state , indxWork , (string)pars[(int)PanelLoader.INDEX_PREPARE_PARS.ID_OBJ_SEL] , (string)pars[(int)PanelLoader.INDEX_PREPARE_PARS.DEPENDENCED_DATA] } }; break; case PanelLoader.KEY_CONTROLS.TBX_GROUPSOURCES_ADDING: //case PanelLoader.KEY_CONTROLS.TBX_GROUPSIGNALS_ADDING: state = HHandlerQueue.StatesMachine.SET_TEXT_ADDING; arObjToDataHost = new object[] { new object[] { (int)state , indxWork , (string)pars[(int)PanelLoader.INDEX_PREPARE_PARS.ID_OBJ_SEL] , (string)pars[(int)PanelLoader.INDEX_PREPARE_PARS.DEPENDENCED_DATA] } }; break; case PanelLoader.KEY_CONTROLS.GROUP_BOX_GROUP_SIGNALS: state = HHandlerQueue.StatesMachine.SET_GROUP_SIGNALS_PARS; arObjToDataHost = new object[] { new object[] { (int)state , indxWork , (string)(pars[(int)PanelLoader.INDEX_PREPARE_PARS.ID_OBJ_SEL]) , (GROUP_SIGNALS_PARS)pars[(int)PanelLoader.INDEX_PREPARE_PARS.DEPENDENCED_DATA] } }; break; default: break; } break; default: break; } break; case KEY_EVENT.CELL_CLICK: switch (indxWork) { case INDEX_SRC.SOURCE: switch ((PanelLoader.KEY_CONTROLS)pars[(int)PanelLoader.INDEX_PREPARE_PARS.KEY_OBJ]) { case PanelLoader.KEY_CONTROLS.DGV_GROUP_SOURCES: state = HHandlerQueue.StatesMachine.STATE_CHANGED_GROUP_SOURCES; break; case PanelLoader.KEY_CONTROLS.DGV_GROUP_SIGNALS: state = HHandlerQueue.StatesMachine.STATE_CHANGED_GROUP_SIGNALS; break; default: break; } break; case INDEX_SRC.DEST: switch ((PanelLoader.KEY_CONTROLS)pars[(int)PanelLoader.INDEX_PREPARE_PARS.KEY_OBJ]) { case PanelLoader.KEY_CONTROLS.DGV_GROUP_SOURCES: state = HHandlerQueue.StatesMachine.STATE_CHANGED_GROUP_SOURCES; break; case PanelLoader.KEY_CONTROLS.DGV_GROUP_SIGNALS: state = HHandlerQueue.StatesMachine.STATE_CHANGED_GROUP_SIGNALS; break; default: break; } break; default: break; } arObjToDataHost = new object[] { new object [] { (int)state , indxWork , pars[(int)PanelLoader.INDEX_PREPARE_PARS.ID_OBJ_SEL] , pars[(int)PanelLoader.INDEX_PREPARE_PARS.DEPENDENCED_DATA] } }; break; case KEY_EVENT.BTN_DLL_RELOAD: switch (indxWork) { case INDEX_SRC.SOURCE: case INDEX_SRC.DEST: //state = ; arObjToDataHost = new object[] { new object [] { (int)HHandlerQueue.StatesMachine.COMMAND_RELAOD_GROUP_SOURCES , indxWork , pars[(int)PanelLoader.INDEX_PREPARE_PARS.ID_OBJ_SEL] //, pars[(int)PanelLoader.INDEX_PREPARE_PARS.DEPENDENCED_DATA] } }; break; default: break; } break; case KEY_EVENT.BTN_CLEAR_CLICK: switch (indxWork) { case INDEX_SRC.SOURCE: //для SOURCE удаление НЕвозможно ; break; case INDEX_SRC.DEST: switch ((PanelLoader.KEY_CONTROLS)pars[(int)PanelLoader.INDEX_PREPARE_PARS.KEY_OBJ]) { case PanelLoader.KEY_CONTROLS.DGV_GROUP_SOURCES: // для DEST группы источников удаление НЕвозможно ; break; case PanelLoader.KEY_CONTROLS.DGV_GROUP_SIGNALS: // удаление возможно ТОЛЬКО для DEST группв сигналов state = HHandlerQueue.StatesMachine.CLEARVALUES_DEST_GROUP_SIGNALS; arObjToDataHost = new object[] { new object [] { (int)state , indxWork , pars[(int)PanelLoader.INDEX_PREPARE_PARS.ID_OBJ_SEL] , pars[(int)PanelLoader.INDEX_PREPARE_PARS.DEPENDENCED_DATA] } }; break; default: break; } break; default: break; } break; default: break; } //Ретрансляция для постановки в очередь if (arObjToDataHost.Length > 0) { DataAskedHost(arObjToDataHost); } else { ; } }
/// <summary> /// Обработчик события получения данных по запросу (выполняется в текущем потоке) /// </summary> /// <param name="obj">Результат, полученный по запросу (массив 'object')</param> private void onEvtDataRecievedHost(object obj) { //Обработанное состояние HHandlerQueue.StatesMachine state = (HHandlerQueue.StatesMachine)Int32.Parse((obj as object[])[0].ToString()); //Параметры (массив) в 1-ом элементе результата object par = (obj as object[])[1]; switch (state) { case HHandlerQueue.StatesMachine.LIST_GROUP_SOURCES: //Группы источников (источник) fillWorkItem(INDEX_SRC.SOURCE, PanelLoader.KEY_CONTROLS.DGV_GROUP_SOURCES, (par as object[])[(int)INDEX_SRC.SOURCE] as string[, ]); fillWorkItem(INDEX_SRC.DEST, PanelLoader.KEY_CONTROLS.DGV_GROUP_SOURCES, (par as object[])[(int)INDEX_SRC.DEST] as string[, ]); break; case HHandlerQueue.StatesMachine.OBJ_SRC_GROUP_SOURCES: //Группа (объект) источников (источник) //m_arCurrentSrcItems [(int)INDEX_SRC.SOURCE] = par as ITEM_SRC; fillWorkItem(INDEX_SRC.SOURCE, par as GROUP_SRC); break; case HHandlerQueue.StatesMachine.OBJ_DEST_GROUP_SOURCES: //Группа (объект) источников (назначение) //m_arCurrentSrcItems[(int)INDEX_SRC.DEST] = par as ITEM_SRC; fillWorkItem(INDEX_SRC.DEST, par as GROUP_SRC); break; case HHandlerQueue.StatesMachine.TIMER_WORK_UPDATE: m_iSecondUpdate = (int)par; startTimerUpdate(); activeTimerUpdate(true); break; case HHandlerQueue.StatesMachine.OBJ_SRC_GROUP_SIGNALS_PARS: //Объект с параметрами группы сигналов (источник) //??? //fillWorkItem(INDEX_SRC.SOURCE, par as GROUP_SIGNALS_SRC); fillWorkItem(INDEX_SRC.SOURCE, par as GROUP_SIGNALS_PARS); break; case HHandlerQueue.StatesMachine.OBJ_SRC_GROUP_SIGNALS: //Объект группы сигналов (источник) fillWorkItem(INDEX_SRC.SOURCE, par as GROUP_SIGNALS_SRC); break; case HHandlerQueue.StatesMachine.OBJ_DEST_GROUP_SIGNALS_PARS: //Объект с параметрами группы сигналов (назначение) //??? //fillWorkItem(INDEX_SRC.DEST, par as GROUP_SIGNALS_SRC); fillWorkItem(INDEX_SRC.DEST, par as GROUP_SIGNALS_PARS); break; case HHandlerQueue.StatesMachine.OBJ_DEST_GROUP_SIGNALS: //Объект группы сигналов (назначение) //??? fillWorkItem(INDEX_SRC.DEST, par as GROUP_SIGNALS_SRC); break; case HHandlerQueue.StatesMachine.STATE_GROUP_SOURCES: //Состояние группы источников (источник, назначение) for (INDEX_SRC indxSrc = INDEX_SRC.SOURCE; indxSrc < INDEX_SRC.COUNT_INDEX_SRC; indxSrc++) { enabledWorkItem(indxSrc, PanelLoader.KEY_CONTROLS.DGV_GROUP_SOURCES, (par as object[])[(int)indxSrc] as GroupSources.STATE[]); } break; case HHandlerQueue.StatesMachine.STATE_GROUP_SIGNALS: //Состояние группы сигналов (источник, назначение) for (INDEX_SRC indxSrc = INDEX_SRC.SOURCE; indxSrc < INDEX_SRC.COUNT_INDEX_SRC; indxSrc++) { enabledWorkItem(indxSrc, PanelLoader.KEY_CONTROLS.DGV_GROUP_SIGNALS, (par as object[])[(int)indxSrc] as object []); } break; case HHandlerQueue.StatesMachine.STATE_CHANGED_GROUP_SOURCES: //Состояние (изменено) группы источников (источник, назначение) //Немедленно запросить состояния групп источников changeTimerUpdate(0); break; case HHandlerQueue.StatesMachine.STATE_CHANGED_GROUP_SIGNALS: //Состояние (изменено) группы сигналов (источник, назначение) //Немедленно запросить состояния групп сигналов changeTimerUpdate(0); break; case HHandlerQueue.StatesMachine.COMMAND_RELAOD_GROUP_SOURCES: //Состояние (выгружена/загружена) группы источников (источник, назначение) //Немедленно запросить состояния групп источников changeTimerUpdate(0); break; case HHandlerQueue.StatesMachine.DATA_SRC_GROUP_SIGNALS: if (par == null) { m_arLoader[(int)INDEX_SRC.SOURCE].UpdateData(); } else { m_arLoader[(int)INDEX_SRC.SOURCE].UpdateData(par as DataTable); } break; case HHandlerQueue.StatesMachine.DATA_DEST_GROUP_SIGNALS: if (par == null) { m_arLoader[(int)INDEX_SRC.DEST].UpdateData(); } else { m_arLoader[(int)INDEX_SRC.DEST].UpdateData(par as DataTable); } break; break; //case HHandlerQueue.StatesMachine.SET_IDCUR_SOURCE_OF_GROUP: // break; case HHandlerQueue.StatesMachine.GET_GROUP_SIGNALS_DATETIME_PARS: if (!(par == null)) { m_arLoader[(int)INDEX_SRC.SOURCE].FillDatetimePars(par as DATETIME_WORK); } else { ; } break; default: break; } }
/// <summary> /// Обработчик события 'EvtDataAskedHost' от панелей (источник, назначение) /// </summary> /// <param name="obj">Параметр для передачи-массив (0-панель, 1-индекс группы источников, 2-индекс группы сигналов)</param> private void OnEvtDataAskedPanelWork_PanelLoader(object par) { object [] pars = (par as EventArgsDataHost).par[0] as object []; //Массив параметров для передачи object[] arObjToDataHost = new object [] { }; //Событие для постановки в очередь обработки событий HHandlerQueue.StatesMachine state = HHandlerQueue.StatesMachine.UNKNOWN; //Определить панель-инициатор сообщения INDEX_SRC indxWork = (INDEX_SRC)this.Controls.GetChildIndex(pars[(int)PanelLoader.INDEX_PREPARE_PARS.OBJ] as PanelLoader); switch ((KEY_EVENT)pars[(int)PanelLoader.INDEX_PREPARE_PARS.KEY_EVT]) { case KEY_EVENT.SELECTION_CHANGED: switch (indxWork) { case INDEX_SRC.SOURCE: switch ((PanelLoader.KEY_CONTROLS)pars[(int)PanelLoader.INDEX_PREPARE_PARS.KEY_OBJ]) { case PanelLoader.KEY_CONTROLS.DGV_GROUP_SOURCES: state = HHandlerQueue.StatesMachine.OBJ_SRC_GROUP_SOURCES; arObjToDataHost = new object[] { new object[] { (int)state, pars[(int)PanelLoader.INDEX_PREPARE_PARS.ID_OBJ_SEL] } }; break; case PanelLoader.KEY_CONTROLS.DGV_GROUP_SIGNALS: state = HHandlerQueue.StatesMachine.OBJ_SRC_GROUP_SIGNALS_PARS; arObjToDataHost = new object[] { new object[] { (int)state , indxWork , (string)pars[(int)PanelLoader.INDEX_PREPARE_PARS.ID_OBJ_SEL] , (string)pars[(int)PanelLoader.INDEX_PREPARE_PARS.DEPENDENCED_DATA] } , new object[] { (int)HHandlerQueue.StatesMachine.OBJ_SRC_GROUP_SIGNALS , indxWork , (string)pars[(int)PanelLoader.INDEX_PREPARE_PARS.DEPENDENCED_DATA] } }; break; case PanelLoader.KEY_CONTROLS.CBX_SOURCE_OF_GROUP: state = HHandlerQueue.StatesMachine.SET_IDCUR_SOURCE_OF_GROUP; arObjToDataHost = new object[] { new object[] { (int)state , indxWork , (string)pars[(int)PanelLoader.INDEX_PREPARE_PARS.ID_OBJ_SEL] , (string)pars[(int)PanelLoader.INDEX_PREPARE_PARS.DEPENDENCED_DATA] } }; break; case PanelLoader.KEY_CONTROLS.TBX_GROUPSOURCES_ADDING: //case PanelLoader.KEY_CONTROLS.TBX_GROUPSIGNALS_ADDING: state = HHandlerQueue.StatesMachine.SET_TEXT_ADDING; arObjToDataHost = new object[] { new object[] { (int)state , indxWork , (string)pars[(int)PanelLoader.INDEX_PREPARE_PARS.ID_OBJ_SEL] , (string)pars[(int)PanelLoader.INDEX_PREPARE_PARS.DEPENDENCED_DATA] } }; break; default: break; } break; case INDEX_SRC.DEST: switch ((PanelLoader.KEY_CONTROLS)pars[(int)PanelLoader.INDEX_PREPARE_PARS.KEY_OBJ]) { case PanelLoader.KEY_CONTROLS.DGV_GROUP_SOURCES: state = HHandlerQueue.StatesMachine.OBJ_DEST_GROUP_SOURCES; arObjToDataHost = new object[] { new object[] { (int)state, pars[(int)PanelLoader.INDEX_PREPARE_PARS.ID_OBJ_SEL] } }; break; case PanelLoader.KEY_CONTROLS.DGV_GROUP_SIGNALS: state = HHandlerQueue.StatesMachine.OBJ_DEST_GROUP_SIGNALS_PARS; arObjToDataHost = new object[] { new object[] { (int)state , indxWork , (string)pars[(int)PanelLoader.INDEX_PREPARE_PARS.ID_OBJ_SEL] , (string)pars[(int)PanelLoader.INDEX_PREPARE_PARS.DEPENDENCED_DATA] } , new object[] { (int)HHandlerQueue.StatesMachine.OBJ_DEST_GROUP_SIGNALS , indxWork , (string)pars[(int)PanelLoader.INDEX_PREPARE_PARS.DEPENDENCED_DATA] } }; break; case PanelLoader.KEY_CONTROLS.CBX_SOURCE_OF_GROUP: state = HHandlerQueue.StatesMachine.SET_IDCUR_SOURCE_OF_GROUP; arObjToDataHost = new object[] { new object[] { (int)state , indxWork , (string)pars[(int)PanelLoader.INDEX_PREPARE_PARS.ID_OBJ_SEL] , (string)pars[(int)PanelLoader.INDEX_PREPARE_PARS.DEPENDENCED_DATA] } }; break; case PanelLoader.KEY_CONTROLS.TBX_GROUPSOURCES_ADDING: //case PanelLoader.KEY_CONTROLS.TBX_GROUPSIGNALS_ADDING: state = HHandlerQueue.StatesMachine.SET_TEXT_ADDING; arObjToDataHost = new object[] { new object[] { (int)state , indxWork , (string)pars[(int)PanelLoader.INDEX_PREPARE_PARS.ID_OBJ_SEL] , (string)pars[(int)PanelLoader.INDEX_PREPARE_PARS.DEPENDENCED_DATA] } }; break; default: break; } break; default: break; } break; case KEY_EVENT.CELL_CLICK: switch (indxWork) { case INDEX_SRC.SOURCE: switch ((PanelLoader.KEY_CONTROLS)pars[(int)PanelLoader.INDEX_PREPARE_PARS.KEY_OBJ]) { case PanelLoader.KEY_CONTROLS.DGV_GROUP_SOURCES: state = HHandlerQueue.StatesMachine.STATE_CHANGED_GROUP_SOURCES; break; case PanelLoader.KEY_CONTROLS.DGV_GROUP_SIGNALS: state = HHandlerQueue.StatesMachine.STATE_CHANGED_GROUP_SIGNALS; break; default: break; } break; case INDEX_SRC.DEST: switch ((PanelLoader.KEY_CONTROLS)pars[(int)PanelLoader.INDEX_PREPARE_PARS.KEY_OBJ]) { case PanelLoader.KEY_CONTROLS.DGV_GROUP_SOURCES: state = HHandlerQueue.StatesMachine.STATE_CHANGED_GROUP_SOURCES; break; case PanelLoader.KEY_CONTROLS.DGV_GROUP_SIGNALS: state = HHandlerQueue.StatesMachine.STATE_CHANGED_GROUP_SIGNALS; break; default: break; } break; default: break; } arObjToDataHost = new object[] { new object [] { (int)state , indxWork , pars[(int)PanelLoader.INDEX_PREPARE_PARS.ID_OBJ_SEL] , pars[(int)PanelLoader.INDEX_PREPARE_PARS.DEPENDENCED_DATA] } }; break; default: break; } //Ретрансляция для постановки в очередь DataAskedHost(arObjToDataHost); }