Esempio n. 1
0
        /// <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
            //    ;
        }
Esempio n. 2
0
        /// <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
                    {
                        ;
                    }
                }
            }
        }
Esempio n. 3
0
 /// <summary>
 /// Сохранить состояние объекта контроля
 /// </summary>
 /// <param name="e">Аргумент события - аврийное состояние объекта контроля</param>
 public void MarkedItem(HHandlerQueue.EventCrashedArgs e, STATE state)
 {
     MarkedItem(e.m_id, state);
 }