Пример #1
0
        public void InitTEC(FormChangeMode.MODE_TECCOMPONENT mode, /*TYPE_DATABASE_CFG typeCfg, */ HMark markQueries, bool bIgnoreTECInUse, int[] arTECLimit, bool bUseData = false)
        {
            //Logging.Logg().Debug("Admin::InitTEC () - вход...");

            if ((mode == FormChangeMode.MODE_TECCOMPONENT.TEC) ||
                (mode == FormChangeMode.MODE_TECCOMPONENT.ANY))    //??? зачем '.ANY'
            {
                this.m_list_tec = DbTSQLConfigDatabase.DbConfig().InitTEC(bIgnoreTECInUse, arTECLimit, bUseData) as DbTSQLConfigDatabase.ListTEC;
            }
            else
            {
                this.m_list_tec = DbTSQLConfigDatabase.DbConfig().InitTEC(mode, bIgnoreTECInUse, arTECLimit, bUseData) as DbTSQLConfigDatabase.ListTEC;
            }

            initQueries(markQueries);
            initTECComponents();

            try {
                CurrentKey = new FormChangeMode.KeyDevice()
                {
                    Id = allTECComponents.First(comp => comp.Mode == mode).m_id, Mode = mode
                };
            } catch (Exception e) {
                Logging.Logg().Exception(e, $"HADmin::InitTEC (mode={mode}) - не найден 1-ый элемент для инициализации списка", Logging.INDEX_MESSAGE.NOT_SET);
            }
        }
Пример #2
0
        public override bool IsRDGExcel(FormChangeMode.KeyDevice key_tec)
        {
            bool bRes = false;

            foreach (TECComponent comp in allTECComponents)
            {
                if (comp.tec.m_id == key_tec.Id)
                {
                    if (comp.tec.GetAddingParameter(TEC.ADDING_PARAM_KEY.PATH_RDG_EXCEL).ToString().Length > 0)
                    {
                        bRes = true;

                        break;
                    }
                    else
                    {
                        ;
                    }
                }
                else
                {
                    ;
                }
            }

            return(bRes);
        }
Пример #3
0
        public void addTextBoxColumn(string name, FormChangeMode.KeyDevice key_main, FormChangeMode.KeyDevice key_owner)
        {
            DataGridViewTextBoxColumn insColumn = new DataGridViewTextBoxColumn();

            insColumn.Frozen     = false;
            insColumn.Width      = 66;
            insColumn.HeaderText = name;
            insColumn.Name       = "column" + (Columns.Count - 1);
            insColumn.ReadOnly   = false;
            insColumn.SortMode   = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable;
            try { Columns.Insert(Columns.Count - 1, insColumn); }
            catch (Exception e) {
                Logging.Logg().Exception(e, string.Format("DataGridViewAdminNSS::addTextBoxColumn (name={0}, id={1}, id_owner={2}) - Columns.Insert", name, key_main.Id, key_owner.Id), Logging.INDEX_MESSAGE.NOT_SET);
            }

            insColumn.Tag = new ColumnTag()
            {
                KeyMain = key_main, KeyOwner = key_owner
            };

            if (key_owner.Mode == FormChangeMode.MODE_TECCOMPONENT.TEC)
            {
                Columns[Columns.Count - 1 - 1].Frozen            = true;
                Columns [Columns.Count - 1 - 1].ReadOnly         = true;
                Columns [Columns.Count - 1 - 1].DefaultCellStyle = dgvCellStyleGTP;
            }
            else
            {
                ;
            }
        }
Пример #4
0
        public override void GetRDGValues(FormChangeMode.KeyDevice key, DateTime date)
        {
            //delegateStartWait ();
            FillListKeyTECComponentDetail(key.Id);

            new Thread(new ParameterizedThreadStart(threadGetRDGValuesWithDate)).Start(date);
            //threadGetRDGValuesWithDate (date);
            //delegateStopWait ();
        }
Пример #5
0
        public override void ImpRDGExcelValues(FormChangeMode.KeyDevice key, DateTime date)
        {
            //delegateStartWait();

            ClearListRDGValues();

            new Thread(new ParameterizedThreadStart(threadImpRDGExcelValues)).Start(date);
            //threadGetRDGExcelValues (date);

            //delegateStopWait();
        }
Пример #6
0
 public void BaseGetRDGValue(FormChangeMode.KeyDevice key, DateTime date)
 {
     if (!(date == DateTime.MinValue))
     {
         base.GetRDGValues(key, (DateTime)date);
     }
     else
     {
         base.GetRDGValues(key, true);
     }
 }
Пример #7
0
        public IDevice FindTECComponent(FormChangeMode.KeyDevice key)
        {
            IDevice dev;

            if ((key.Mode == FormChangeMode.MODE_TECCOMPONENT.TEC) ||
                (key.Mode == FormChangeMode.MODE_TECCOMPONENT.ANY))
            {
                dev = m_list_tec.FirstOrDefault(tec => tec.m_id == key.Id);
            }
            else
            {
                dev = FindTECComponent(key.Id);
            }

            return(dev);
        }
Пример #8
0
        public override Errors SaveChanges()
        {
            Errors errRes = Errors.NoError,
                   bErr   = Errors.NoError;
            INDEX_WAITHANDLE_REASON indxEv = INDEX_WAITHANDLE_REASON.SUCCESS;

            m_evSaveChangesComplete.Reset();

            lock (m_lockResSaveChanges)
            {
                m_listResSaveChanges.Clear();
            }

            FormChangeMode.KeyDevice prevKeyTECComponent = CurrentKey;

            foreach (RDGStruct [] curRDGValues in m_listCurRDGValues)
            {
                bErr = Errors.NoError;

                ResetSyncState();

                if (m_listKeyTECComponentDetail[m_listCurRDGValues.IndexOf(curRDGValues)].Mode == FormChangeMode.MODE_TECCOMPONENT.TG)
                {
                    indxEv = WaitAny(Constants.MAX_WATING, true);
                    if (indxEv == INDEX_WAITHANDLE_REASON.SUCCESS)
                    {
                        CurrentKey = m_listKeyTECComponentDetail[m_listCurRDGValues.IndexOf(curRDGValues)];

                        curRDGValues.CopyTo(m_curRDGValues, 0);

                        bErr = base.SaveChanges();
                    }
                    else
                    {
                        ASUTP.Logging.Logg().Error($"AdminTS_TG::SaveChanges () - <{indxEv}>...", ASUTP.Logging.INDEX_MESSAGE.NOT_SET);

                        break;
                    }
                }
                else
                {
                    ;
                }

                lock (m_lockResSaveChanges)
                {
                    m_listResSaveChanges.Add(bErr);

                    if (!(bErr == Errors.NoError) && (errRes == Errors.NoError))
                    {
                        errRes = bErr;
                    }
                    else
                    {
                        ;
                    }
                }
            }

            CurrentKey = prevKeyTECComponent;

            //if (indxEv == 0)
            //if (errRes == Errors.NoError)
            m_evSaveChangesComplete.Set();
            //else ;

            //??? почему AdminValues
            saveComplete?.Invoke((m_markSavedValues.IsMarked((int)INDEX_MARK_PPBRVALUES.PBR_SAVED) == true) ? (int)StatesMachine.SavePPBRValues : (int)StatesMachine.SaveAdminValues);

            return(errRes);
        }
Пример #9
0
 public abstract void GetRDGValues(FormChangeMode.KeyDevice key, DateTime date);
Пример #10
0
        /// <summary>
        ///  Добавить значения для экспорта
        /// </summary>
        /// <param name="compValues">Значения (админ. + ПБР) для одного из компонентов ТЭЦ</param>
        /// <param name="date">Дата, за которую получены значения</param>
        /// <returns>Очередной индекс для запроса значений из БД</returns>
        public FormChangeMode.KeyDevice AddValueToExportRDGValues(RDGStruct[] compValues, DateTime date)
        {
            FormChangeMode.KeyDevice keyRes = new FormChangeMode.KeyDevice();

            if ((date - DateTime.MinValue.Date).Days > 0)
            {
                if ((_listTECComponentKey.Count > 0) &&
                    (!(CurrentKey.Id < 0)) &&
                    (!(_listTECComponentKey [0].Id < 0)))
                {
                    if (CurrentKey.Id - _listTECComponentKey[0].Id == 0)
                    {
                        //??? ошибка не в этом методе
                        //Logging.Logg().Action(string.Format("AdminTS_KomDisp::AddValueToExportRDGValues () - получены значения для [ID={0}, Index={1}, за дату={2}, кол-во={3}] компонента..."
                        //        , _listTECComponentKey[0].Id, _listTECComponentKey[0], date, compValues.Length)
                        //    , Logging.INDEX_MESSAGE.D_006);

                        actionReport(string.Format("получены значения для [ID={0}, Index={1}, за дату={2}, кол-во={3}] компонента..."
                                                   , _listTECComponentKey[0].Id, _listTECComponentKey[0], date, compValues.Length));

                        if ((_msExcelIOExportPBRValues.AddTECComponent(allTECComponents.Find(comp => comp.m_id == CurrentKey.Id)) == 0) &&
                            (_msExcelIOExportPBRValues.SetDate(date) == true))
                        {
                            TECComponentComplete(-1, true); // дубликатов быть не должно (см. добавление элементов)

                            //Console.WriteLine(@"AdminTS_KomDisp::AddValueToExportRDGValues () - обработка элемента=[{0}], остатолось элементов={1}", indxTECComponents, _lisTECComponentIndex.Count);

                            // добавить значения по составному ключу: [DateTime, Index]
                            _msExcelIOExportPBRValues.AddPBRValues(CurrentKey.Id, compValues);

                            keyRes = FirstTECComponentKey;
                            // проверить повторно после удаления элемента
                            if (keyRes == FormChangeMode.KeyDevice.Empty)
                            {
                                // все значения по всем компонентам получены/добавлены
                                Logging.Logg().Action(string.Format("AdminTS_KomDisp::AddValueToExportRDGValues () - получены все значения для всех компонентов...")
                                                      , Logging.INDEX_MESSAGE.NOT_SET);

                                actionReport(string.Format("получены все значения для всех компонентов..."));

                                _msExcelIOExportPBRValues.Run();
                                // установить штатного признак завершения
                                keyRes.Id = 0;
                            }
                            else
                            {
                                // очередной индекс компонента для запрооса
                                ;
                            }
                        }
                        else
                        {
                            Logging.Logg().Error(string.Format($"AdminTS_KomDisp::AddValueToExportRDGValues () - компонент с ключом [{CurrentKey.ToString ()}] не может быть добавлен (пред. опреация экспорта не завершена)...")
                                                 , Logging.INDEX_MESSAGE.NOT_SET);
                            // завершить обработку
                            _listTECComponentKey.Clear();

                            _msExcelIOExportPBRValues.Abort();
                            // установить признак аварийного завершения
                            keyRes.Id = -1;

                            errorReport("Экспорт ПБР-значений");
                        }
                    }
                    else
                    {
                        // текущий индекс и 0-ой элемент массива индексов должны совпадать
                        Logging.Logg().Error(string.Format($"AdminTS_KomDisp::AddValueToExportRDGValues () - текущий ключ <{CurrentKey.ToString ()}> и 0-ой <{_listTECComponentKey [0].ToString()}> элемент массива индексов не совпадают...")
                                             , Logging.INDEX_MESSAGE.NOT_SET);
                    }
                }
                else
                {
                    //??? ошибка, т.к. выполнен запрос и получены значения, а индекс компонента не известен
                    Logging.Logg().Error(string.Format("AdminTS_KomDisp::AddValueToExportRDGValues () - получены значения для неизвестного компонента ключ={0}..."
                                                       , CurrentKey.ToString())
                                         , Logging.INDEX_MESSAGE.NOT_SET);
                }
            }
            else
            {
                // дата для полученных значений неизвестна
                ;
            }

            _eventUnitTestExportPBRValuesRequest?.Invoke(keyRes, date, CurrentKey, _listTECComponentKey);

            return(keyRes);
        }
Пример #11
0
        private Errors saveCSVValues(FormChangeMode.KeyDevice key, object pbr_number)
        {
            Errors errRes = Errors.NoSet;

            RDGStruct[]    curRDGValues     = new RDGStruct[m_curRDGValues.Length];
            int            hour             = -1;
            double         val              = -1F;
            string         name_future      = string.Empty;
            List <DataRow> rowsTECComponent = null;

            CONN_SETT_TYPE typeValues = CONN_SETT_TYPE.COUNT_CONN_SETT_TYPE;

            if (pbr_number is string)
            {
                // если строка, то импортируется указанный номер ПБР
                typeValues = CONN_SETT_TYPE.PBR;
            }
            else if (pbr_number is CONN_SETT_TYPE)
            {
                //!!! только CONN_SETT_TYPE.ADMIN
                typeValues = (CONN_SETT_TYPE)pbr_number;
            }
            else
            {
                ;
            }
            // проверить был ли определен тип сохраняемых значений
            //  и имеет ли таблица соответствующую типу значений структуру (присутствуют ли в таблице необходимые поля)
            if ((!(typeValues == CONN_SETT_TYPE.COUNT_CONN_SETT_TYPE)) &&
                (CheckNameFieldsOfTable(m_tableValuesResponse, _listCSVValuesFields[(int)typeValues]) == true))
            {
                //Получить значения для сохранени
                name_future      = allTECComponents.Find(comp => comp.m_id == key.Id).name_future;
                rowsTECComponent = new List <DataRow>(m_tableValuesResponse.Select(@"GTP_ID='" + name_future + @"'"));
                //Вариант №2 - тестовый
                //foreach (DataRow r in m_tableValuesResponse.Rows)
                //    if (name_future.Equals(r["GTP_ID"]) == true)
                //        rowsTECComponent.Add(r);
                //    else
                //        ;
                //Проверить наличие записей для ГТП
                if (rowsTECComponent.Count > 0)
                {
                    //!!! должно быть 24 записи (обеспечивается дополнением при загрузке)
                    if (rowsTECComponent.Count < 24)
                    {
                        Logging.Logg().Error(string.Format(@"AdminTS_KomDisp::saveCSVValues () - для ГТП(ИД={0}) количество записей={1} ..."
                                                           , name_future, rowsTECComponent.Count)
                                             , Logging.INDEX_MESSAGE.NOT_SET);
                    }
                    else
                    {
                        ;
                    }

                    foreach (DataRow r in rowsTECComponent)
                    {
                        hour = int.Parse(r[@"SESSION_INTERVAL"].ToString());

                        try {
                            switch (typeValues)
                            {
                            case CONN_SETT_TYPE.PBR:
                                HMath.doubleParse(r[@"TotalBR"].ToString(), out curRDGValues[hour].pbr);
                                HMath.doubleParse(r[@"PminBR"].ToString(), out curRDGValues[hour].pmin);
                                HMath.doubleParse(r[@"PmaxBR"].ToString(), out curRDGValues[hour].pmax);

                                curRDGValues[hour].pbr_number = pbr_number as string;

                                ////Отладка
                                //Console.WriteLine(@"GTP_ID=" + allTECComponents[indx].name_future + @"(" + hour + @") TotalBR=" + curRDGValues[hour].pbr + @"; PBRNumber=" + curRDGValues[hour].pbr_number);
                                break;

                            case CONN_SETT_TYPE.ADMIN:
                                HMath.doubleParse(r[@"REC"].ToString(), out curRDGValues[hour].recomendation);
                                curRDGValues[hour].deviationPercent = Int16.Parse(r[@"IS_PER"].ToString()) == 1;
                                HMath.doubleParse(r[@"DIVIAT"].ToString(), out curRDGValues[hour].deviation);
                                curRDGValues[hour].fc = Int16.Parse(r[@"FC"].ToString()) == 1;
                                break;

                            default:
                                break;
                            }
                        }
                        catch (Exception e) {
                            Logging.Logg().Exception(e
                                                     , $@"AdminTS_KomDisp::saveCSVValues () - GTP_ID={FindTECComponent(key).name_shr}, час ({hour})..."
                                                     , Logging.INDEX_MESSAGE.NOT_SET);

                            errRes = Errors.ParseError;
                        }

                        if (errRes == Errors.ParseError)
                        {
                            break;
                        }
                        else
                        {
                        }
                        ;
                    }

                    if (errRes == Errors.NoSet)
                    {
                        //Очистить тек./массив с данными
                        ClearValues();

                        //Копировать полученные значения в "текущий массив"
                        curRDGValues.CopyTo(m_curRDGValues, 0);

                        CurrentKey = key;

                        errRes =
                            SaveChanges()
                            //Errors.NoSet
                            //Errors.NoError
                        ;
                    }
                    else
                    {
                        ; //errRes = Errors.ParseError;
                    }
                }
                else
                {
                    errRes = Errors.ParseError;
                }

                if (errRes == Errors.ParseError)
                {
                    //Пропустить запись ГТП, разрешить переход к следующей
                    //Псевдо-закончена обработка всех событий
                    completeHandleStates(INDEX_WAITHANDLE_REASON.SUCCESS);
                }
                else
                {
                    ;
                }
            }
            else
            {
                ;
            }

            return(errRes);
        }
Пример #12
0
        private void threadCSVValues(object type)
        {
            Errors errRes = Errors.NoError;

            Thread.CurrentThread.CurrentCulture       =
                Thread.CurrentThread.CurrentUICulture =
                    ProgramBase.ss_MainCultureInfo; //new System.Globalization.CultureInfo(@"en-US")

            FormChangeMode.KeyDevice key;
            //Определить тип загружаемых значений
            CONN_SETT_TYPE typeValues = (CONN_SETT_TYPE)type;
            object         arg;

            INDEX_WAITHANDLE_REASON indxEv = INDEX_WAITHANDLE_REASON.SUCCESS;

            FormChangeMode.KeyDevice prevKeyTECComponents = CurrentKey;
            string strPBRNumber = string.Empty; // ...только для ПБР

            if (typeValues == CONN_SETT_TYPE.PBR)
            {//Только для ПБР
                //Противоположные операции при завершении потока 'threadPPBRCSVValues'
                //Разрешить запись ПБР-значений
                if (m_markSavedValues.IsMarked((int)INDEX_MARK_PPBRVALUES.PBR_ENABLED) == true)
                {
                    m_markSavedValues.Marked((int)INDEX_MARK_PPBRVALUES.PBR_SAVED);
                }
                else
                {
                    ;
                }
                //Запретить запись Админ-значений
                if (m_markSavedValues.IsMarked((int)INDEX_MARK_PPBRVALUES.ADMIN_ENABLED) == true)
                {
                    m_markSavedValues.UnMarked((int)INDEX_MARK_PPBRVALUES.ADMIN_SAVED);
                }
                else
                {
                    ;
                }

                strPBRNumber = getNamePBRNumber((int)GetPropertiesOfNameFilePPBRCSVValues()[1] - 1);
            }
            else
            {
                ;
            }

            //Снять все признаки причин прекращения выполнения обработки событий
            ResetSyncState();

            foreach (TECComponent comp in allTECComponents)
            {
                if (comp.IsGTP == true) //Является ГТП
                {
                    arg = null;
                    key = new FormChangeMode.KeyDevice()
                    {
                        Id = comp.m_id, Mode = comp.Mode
                    };
                    indxEv = WaitAny(Constants.MAX_WATING, true); // System.Threading.Timeout.Infinite
                    switch ((INDEX_WAITHANDLE_REASON)indxEv)
                    {
                    case INDEX_WAITHANDLE_REASON.SUCCESS:
                        switch (typeValues)
                        {
                        case CONN_SETT_TYPE.ADMIN:
                            arg = typeValues;
                            break;

                        case CONN_SETT_TYPE.PBR:
                            arg = strPBRNumber;
                            break;

                        default:
                            break;
                        }

                        if (Equals(arg, null) == false)
                        {
                            errRes = saveCSVValues(key, arg);

                            //if (! (errRes == Errors.NoError))
                            //    ; //Ошибка ???
                            //else
                            //    ;
                        }
                        else
                        {
                            ;
                        }
                        break;

                    case INDEX_WAITHANDLE_REASON.ERROR:
                        Logging.Logg().Error($"AdminTS_KomDisp::threadCSVValues () - ошибка для <{key.ToString ()}>..."
                                             , Logging.INDEX_MESSAGE.NOT_SET);
                        break;

                    //case INDEX_WAITHANDLE_REASON.BREAK: в этом объекте не задействован (см. InitSyncState)
                    //    break;
                    case INDEX_WAITHANDLE_REASON.TIMEOUT:
                        Logging.Logg().Warning($"AdminTS_KomDisp::threadCSVValues () - время ожидания <{Constants.MAX_WATING} мсек> истекло для <{key.ToString ()}>..."
                                               , Logging.INDEX_MESSAGE.NOT_SET);
                        break;

                    default:
                        //Ошибка ???
                        //break;
                        //completeHandleStates();

                        Logging.Logg().Warning($"AdminTS_KomDisp::threadCSVValues () - неизвестное состояние объектов синхронизации при ожидании для <{key.ToString ()}>..."
                                               , Logging.INDEX_MESSAGE.NOT_SET);
                        break;
                    }
                }
                else
                {
                    ;
                }
            }

            //Очистить таблицу, полученную из CSV-файла
            m_tableValuesResponse.Clear();
            m_tableValuesResponse = null;

            if (typeValues == CONN_SETT_TYPE.PBR)
            {//Только для ПБР
                //Противоположные операции в 'ImpPPBRCSVValuesRequest'
                //Запретить запись ПБР-значений
                // , запрет устанавливается автоматически
                //Разрешить запись Админ-значений
                if (m_markSavedValues.IsMarked((int)INDEX_MARK_PPBRVALUES.ADMIN_ENABLED) == true)
                {
                    m_markSavedValues.Marked((int)INDEX_MARK_PPBRVALUES.ADMIN_SAVED);
                }
                else
                {
                    ;
                }
            }
            else
            {
                ;
            }

            //Обновить значения на вкладке
            GetRDGValues(prevKeyTECComponents, false);
        }
Пример #13
0
        public override Errors SaveChanges()
        {
            Errors errRes = Errors.NoError,
                   bErr   = Errors.NoError;
            int indxEv    = -1;

            m_evSaveChangesComplete.Reset();

            lock (m_lockResSaveChanges)
            {
                m_listResSaveChanges.Clear();
            }

            FormChangeMode.KeyDevice prevKeyTECComponent = CurrentKey;

            foreach (RDGStruct [] curRDGValues in m_listCurRDGValues)
            {
                bErr = Errors.NoError;

                for (INDEX_WAITHANDLE_REASON i = INDEX_WAITHANDLE_REASON.ERROR; i < (INDEX_WAITHANDLE_REASON.ERROR + 1); i++)
                {
                    ((ManualResetEvent)m_waitHandleState[(int)i]).Reset();
                }

                if (m_listKeyTECComponentDetail[m_listCurRDGValues.IndexOf(curRDGValues)].Mode == FormChangeMode.MODE_TECCOMPONENT.TG)
                {
                    indxEv = WaitHandle.WaitAny(m_waitHandleState);
                    if (indxEv == 0)
                    {
                        CurrentKey = m_listKeyTECComponentDetail[m_listCurRDGValues.IndexOf(curRDGValues)];

                        curRDGValues.CopyTo(m_curRDGValues, 0);

                        bErr = base.SaveChanges();
                    }
                    else
                    {
                        break;
                    }
                }
                else
                {
                    ;
                }

                lock (m_lockResSaveChanges)
                {
                    m_listResSaveChanges.Add(bErr);

                    if (!(bErr == Errors.NoError) && (errRes == Errors.NoError))
                    {
                        errRes = bErr;
                    }
                    else
                    {
                        ;
                    }
                }
            }

            CurrentKey = prevKeyTECComponent;

            //if (indxEv == 0)
            //if (errRes == Errors.NoError)
            m_evSaveChangesComplete.Set();
            //else ;

            //??? почему AdminValues
            saveComplete?.Invoke((m_markSavedValues.IsMarked((int)INDEX_MARK_PPBRVALUES.PBR_SAVED) == true) ? (int)StatesMachine.SavePPBRValues : (int)StatesMachine.SaveAdminValues);

            return(errRes);
        }
Пример #14
0
        public override Errors SaveChanges()
        {
            Errors errRes = Errors.NoError,
                   bErr   = Errors.NoError;
            int indxEv    = -1;

            m_evSaveChangesComplete.Reset();

            lock (m_lockResSaveChanges)
            {
                m_listResSaveChanges.Clear();
            }

            FormChangeMode.KeyDevice prevKeyTECComponent = CurrentKey;

            foreach (RDGStruct [] curRDGValues in m_listCurRDGValues)
            {
                bErr = Errors.NoError;

                for (INDEX_WAITHANDLE_REASON i = INDEX_WAITHANDLE_REASON.ERROR; i < (INDEX_WAITHANDLE_REASON.ERROR + 1); i++)
                {
                    ((ManualResetEvent)m_waitHandleState[(int)i]).Reset();
                }

                if (m_listKeyTECComponentDetail[m_listCurRDGValues.IndexOf(curRDGValues)].Mode == FormChangeMode.MODE_TECCOMPONENT.TG)
                {
                    indxEv = WaitHandle.WaitAny(m_waitHandleState);
                    if (indxEv == 0)
                    {
                        CurrentKey = m_listKeyTECComponentDetail[m_listCurRDGValues.IndexOf(curRDGValues)];

                        curRDGValues.CopyTo(m_curRDGValues, 0);

                        bErr = base.SaveChanges();
                    }
                    else
                    {
                        break;
                    }
                }
                else
                {
                    ;
                }

                lock (m_lockResSaveChanges)
                {
                    m_listResSaveChanges.Add(bErr);

                    if (!(bErr == Errors.NoError) && (errRes == Errors.NoError))
                    {
                        errRes = bErr;
                    }
                    else
                    {
                        ;
                    }
                }
            }

            CurrentKey = prevKeyTECComponent;

            //if (indxEv == 0)
            //if (errRes == Errors.NoError)
            m_evSaveChangesComplete.Set();
            //else ;

            if (!(saveComplete == null))
            {
                saveComplete();
            }
            else
            {
                ;
            }

            return(errRes);
        }
Пример #15
0
        private void threadCSVValues(object type)
        {
            Errors errRes = Errors.NoError;

            Thread.CurrentThread.CurrentCulture       =
                Thread.CurrentThread.CurrentUICulture =
                    ProgramBase.ss_MainCultureInfo; //new System.Globalization.CultureInfo(@"en-US")

            //Определить тип загружаемых значений
            CONN_SETT_TYPE typeValues = (CONN_SETT_TYPE)type;

            int indxEv = -1;

            FormChangeMode.KeyDevice prevKeyTECComponents = CurrentKey;
            string strPBRNumber = string.Empty; // ...только для ПБР

            if (typeValues == CONN_SETT_TYPE.PBR)
            {//Только для ПБР
                //Противоположные операции при завершении потока 'threadPPBRCSVValues'
                //Разрешить запись ПБР-значений
                if (m_markSavedValues.IsMarked((int)INDEX_MARK_PPBRVALUES.PBR_ENABLED) == true)
                {
                    m_markSavedValues.Marked((int)INDEX_MARK_PPBRVALUES.PBR_SAVED);
                }
                else
                {
                    ;
                }
                //Запретить запись Админ-значений
                if (m_markSavedValues.IsMarked((int)INDEX_MARK_PPBRVALUES.ADMIN_ENABLED) == true)
                {
                    m_markSavedValues.UnMarked((int)INDEX_MARK_PPBRVALUES.ADMIN_SAVED);
                }
                else
                {
                    ;
                }

                strPBRNumber = getNamePBRNumber((int)GetPropertiesOfNameFilePPBRCSVValues()[1] - 1);
            }
            else
            {
                ;
            }

            //Снять все признаки причин прекращения выполнения обработки событий
            for (HHandler.INDEX_WAITHANDLE_REASON i = HHandler.INDEX_WAITHANDLE_REASON.ERROR; i < (HHandler.INDEX_WAITHANDLE_REASON.ERROR + 1); i++)
            {
                ((ManualResetEvent)m_waitHandleState[(int)i]).Reset();
            }

            foreach (TECComponent comp in allTECComponents)
            {
                if (comp.IsGTP == true) //Является ГТП
                {
                    indxEv = WaitHandle.WaitAny(m_waitHandleState);
                    if (indxEv == 0)
                    {
                        switch (typeValues)
                        {
                        case CONN_SETT_TYPE.ADMIN:
                            errRes = saveCSVValues(new FormChangeMode.KeyDevice()
                            {
                                Id = comp.m_id, Mode = comp.Mode
                            }, typeValues);
                            break;

                        case CONN_SETT_TYPE.PBR:
                            errRes = saveCSVValues(new FormChangeMode.KeyDevice()
                            {
                                Id = comp.m_id, Mode = comp.Mode
                            }, strPBRNumber);
                            break;

                        default:
                            break;
                        }

                        //if (! (errRes == Errors.NoError))
                        //    ; //Ошибка ???
                        //else
                        //    ;
                    }
                    else
                    {
                        //Ошибка ???
                        //break;
                        //completeHandleStates();
                        ;
                    }
                }
                else
                {
                    ;
                }
            }

            //Очистить таблицу, полученную из CSV-файла
            m_tableValuesResponse.Clear();
            m_tableValuesResponse = null;

            if (typeValues == CONN_SETT_TYPE.PBR)
            {//Только для ПБР
                //Противоположные операции в 'ImpPPBRCSVValuesRequest'
                //Запретить запись ПБР-значений
                // , запрет устанавливается автоматически
                //Разрешить запись Админ-значений
                if (m_markSavedValues.IsMarked((int)INDEX_MARK_PPBRVALUES.ADMIN_ENABLED) == true)
                {
                    m_markSavedValues.Marked((int)INDEX_MARK_PPBRVALUES.ADMIN_SAVED);
                }
                else
                {
                    ;
                }
            }
            else
            {
                ;
            }

            //Обновить значения на вкладке
            GetRDGValues(prevKeyTECComponents);
        }