/// <summary> /// Обработчик события - состояние группы сигналов не актуально /// </summary> /// <param name="ev">Аргумент события</param> private void onEvtCrashed(/*HHandlerQueue.EventCrashedArgs*/ object obj) { HHandlerQueue.EventCrashedArgs ev = obj as HHandlerQueue.EventCrashedArgs; //for (INDEX_SRC type = INDEX_SRC.SOURCE; type < INDEX_SRC.COUNT_INDEX_SRC; type++) // foreach (GroupSources grpSrc in m_listGroupSources[(int)type]) // if ((type == ev.m_id.m_typeOwner) // && (FormMain.FileINI.GetIDIndex (grpSrc.m_strID) == ev.m_id.m_idOwner)) // { switch (ev.m_state) { case STATE.CONTROLED: // группа сигналов в работе m_dictInfoCrashed.AddItem(ev.m_id); break; case STATE.ADDED: case STATE.REMOVED: #if _SEPARATE_APPDOMAIN // группа сигналов не получила подтверждения от библиотеки при изменении своего состояния m_dictInfoCrashed.SetCrashed(ev.m_id.m_typeOwner, ev.m_id.m_idOwner); #endif break; default: break; } // type = INDEX_SRC.COUNT_INDEX_SRC; // для прерывания внешнего цикла // break; // прервать внутренний цикл //} //else // ; }
/// <summary> /// Обработчик события - состояние группы сигналов не актуально /// </summary> /// <param name="ev">Аргумент события</param> private void onCrashed(/*HHandlerQueue.EventCrashedArgs*/ object obj) { HHandlerQueue.EventCrashedArgs ev = obj as HHandlerQueue.EventCrashedArgs; object[] arToSend = null; // массив для аргументов состояния for (INDEX_SRC type = INDEX_SRC.SOURCE; type < INDEX_SRC.COUNT_INDEX_SRC; type++) { foreach (GroupSources grpSrc in m_listGroupSources[(int)type]) { if (grpSrc.m_iIdTypePlugInObjectLoaded == ev.m_id.m_idTypeRegistred) { switch (ev.m_state) { case STATE.CONTROLED: // группа сигналов в работе arToSend = new object[] { (int)StatesMachine.STATE_CHANGED_GROUP_SIGNALS , type , grpSrc.m_strID , grpSrc.GetIdGroupSignals(ev.m_id.m_idGroupSgnls) }; // поставить в очередь 2 состояния: последовательный останов/запуск группы сигналов Push(null, new object[] { new object[] { arToSend // для 'STOP' , arToSend // для 'START' , }, }); break; case STATE.ADDED: case STATE.REMOVED: #if _SEPARATE_APPDOMAIN // группа сигналов не получила подтверждения от библиотеки при изменении своего состояния // поставить в очередь 1 состояние - полная выгрузка/загрузки библиотеки Push(null, new object[] { new object[] { new object [] { StatesMachine.COMMAND_RELAOD_GROUP_SOURCES , type , grpSrc.m_strID } , }, }); #endif break; default: break; } type = INDEX_SRC.COUNT_INDEX_SRC; // для прерывания внешнего цикла break; // прервать внутренний цикл } else { ; } } } }
/// <summary> /// Сохранить состояние объекта контроля /// </summary> /// <param name="e">Аргумент события - аврийное состояние объекта контроля</param> public void MarkedItem(HHandlerQueue.EventCrashedArgs e, STATE state) { MarkedItem(e.m_id, state); }