コード例 #1
0
        /// <summary>
        /// Получение актуального(действующего) планового графика на текущие сутки
        /// </summary>
        static void GetPlanValuesActual(IApiExternal api_, Modes.BusinessLogic.IGenObject IGO)
        {
            //api_.GetPlanFactors() - это список: генерация; минимум генерации; максимум генерации
            //Величины в тестовом примере читаются так: Values (это коллекция) = api_.GetPlanValuesActual(...)
            //А потом цикл по ним, и у них берётся .DT и .Value

            IList <PlanValueItem> LPVI = api_.GetPlanValuesActual(DateTime.Now.Date.LocalHqToSystemEx(), DateTime.Now.Date.AddDays(1).LocalHqToSystemEx(), IGO);

            if (LPVI.Count == 0)
            {
                Console.WriteLine("    Нет параметров генерации!");
            }

            foreach (PlanValueItem pvi in LPVI.OrderBy(RRR => RRR.DT))
            {
                Console.WriteLine("    " + pvi.DT.SystemToLocalHqEx().ToString() + " " + pvi.Type.ToString() + " [" + LPFI[pvi.ObjFactor].Description + "] " + /*it.ObjName это id генерирующего объекта*/ LPFI[pvi.ObjFactor].Name + " =" + pvi.Value.ToString());

                techsite.WritePlanValue(IGO.IdInner, pvi.DT.SystemToLocalHqEx(), pvi.Type.ToString(), (MySQLtechsite.Params)LPFI[pvi.ObjFactor].Id, pvi.Value);     //Запись в БД techsite           //02.09.2013 меняю IGO.Id на IGO.IdInner

                //pvi.DT.SystemToLocalHqEx()    даёт Московское время, как и нужно
                //Аналогичный результат даст явное преобразование TimeZoneInfo.ConvertTimeFromUtc(pvi.DT, TimeZoneInfo.FindSystemTimeZoneById("Russian Standard Time"))
                //"Russian Standard Time" - это Москва. "N. Central Asia Standard Time" - это Новосибирск.
                //Про конвертацию времени: http://msdn.microsoft.com/ru-ru/library/bb397769.aspx
            }
        }
コード例 #2
0
        static void ProcessChilds(Modes.BusinessLogic.IGenObject IGO, int Level, IApiExternal api_)
        {
            foreach (Modes.BusinessLogic.IGenObject IGOch in IGO.Children)
            {
                if (!(IGOch.GenObjType.Id == 15))      //Оборудование типа ГОУ исключаем - по ним нет ни параметров, ни дочерних элементов
                {
                    Console.WriteLine(new System.String('-', Level) + IGOch.Description + " [" + IGOch.GenObjType.Description + "]  P:" + IGOch.VarParams.Count.ToString() + " Id:" + IGOch.Id.ToString() + " IdInner:" + IGOch.IdInner.ToString());
                    //if (g_bList == false) ProcessParams(IGOch); else ;
                    if (IGOch.GenObjType.Id == 3)
                    {
                        //У оборудования типа Электростанция (id=1) нет параметров - только дочерние элементы
                        if (g_bList == false)
                        {
                            GetPlanValuesActual(api_, IGOch);
                        }
                        else
                        {
                            ;
                        }
                    }
                    else
                    {
                        ;
                    }

                    ProcessChilds(IGOch, Level + 1, api_);
                }
                else
                {
                    ;
                }
            }
        }
コード例 #3
0
        public void modesConnect()
        {
            int index = 0;

            while (!ModesApiFactory.IsInitilized && index <= 10)
            {
                try
                {
                    using (Impersonator imp = new Impersonator(MCSettings.Single.MCUser, "corp", MCSettings.Single.MCPassword))
                    {
                        Logger.Info(String.Format("Подключение к MC. Попытка {0}", index));
                        //ModesApiFactory.Initialize(MCSettings.Single.MCServer, MCSettings.Single.MCUser, MCSettings.Single.MCPassword);
                        ModesApiFactory.Initialize(MCSettings.Single.MCServer);
                        api = ModesApiFactory.GetModesApi();
                    }

                    /*Logger.Info(String.Format("Подключение к MC. Попытка {0}", index));
                     *                  ModesApiFactory.Initialize(MCSettings.Single.MCServer, "mc_votges", "mcV0tges");
                     *                  api = ModesApiFactory.GetModesApi();*/
                }
                catch (Exception e)
                {
                    Logger.Info(e.ToString());
                }
                index++;
            }
        }
コード例 #4
0
        public ParseMCGetData(IApiExternal mcApi
                              //, Modes.BusinessLogic.IModesTimeSlice modesTimeSlice
                              , IList <PlanFactorItem> listPFI
                              , object query
                              , Func <int, Modes.BusinessLogic.IGenObject> fFindIGO
                              , Func <int, Modes.BusinessLogic.IGenObject> fAddIGO
                              , Action <FillErrorEventArgs> fGetData_OnFillError)
        {
            _operation = DbMCInterface.Operation.Unknown;

            _mcApi = mcApi;
            //_modesTimeSlice = modesTimeSlice;
            _mcListPFI = listPFI;
            delegateFunctionFindIGO     = fFindIGO;
            delegateFunctionAddIGO      = fAddIGO;
            delegateGetData_OnFillError = fGetData_OnFillError;

            _arguments = ((string)query).Split(';');
            Enum.TryParse <DbMCInterface.Operation> (_arguments [0], out _operation);
        }
コード例 #5
0
ファイル: MainWindow.cs プロジェクト: MODES-Centre/1.4.5
        private void подключитьсяToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (isConnected)
            {
                подключитьсяToolStripMenuItem.Text = "Подключиться";
                ModesApiFactory.CloseConnection();
                isConnected = false;
            }
            else
            {
                ConnectionForm_ f1 = new ConnectionForm_();
                if (f1.ShowDialog() != DialogResult.OK)
                {
                    return;
                }

                if (f1.isLocal)
                {
                    ModesApiFactory.Initialize(f1.serverName, f1.User, f1.Pass);
                }
                else
                {
                    ModesApiFactory.Initialize(f1.serverName);
                }


                if (ModesApiFactory.IsInitilized)
                {
                    api_ = ModesApiFactory.GetModesApi();

                    api_.OnData53500Modified += new EventHandler <EventRefreshData53500>(api__OnData53500Modified);
                    api_.OnMaket53500Changed += new EventHandler <EventRefreshJournalMaket53500>(api__OnMaket53500Changed);
                    api_.OnNsiModified       += new EventHandler <EventUpdateNsi>(api__OnNSIModified);
                    api_.OnClose             += new EventHandler(api__ServiceOnClose);
                    api_.OnPlanDataChanged   += new EventHandler <EventPlanDataChanged>(api__OnPlanDataChanged);
                    isConnected = true;
                    подключитьсяToolStripMenuItem.Text = "Отключиться";
                }
            }
        }
コード例 #6
0
        static void Main(string[] args)
        {
            bool bNoWait,
                 bCalculatedHalfHourValues;

            bNoWait =
                bCalculatedHalfHourValues =
                    false;

            if (ProcArgs(args, out bNoWait, out g_bList, out bCalculatedHalfHourValues) == true)
            {
                return;
            }
            else
            {
                ;
            }

            int iTechsiteInitialized = 0;

            if (g_bList == false)
            {
                Console.WriteLine(Environment.NewLine + "DB PPBR Initializing - Please Wait...");

                try { techsite = new MySQLtechsite(bCalculatedHalfHourValues); }
                catch (Exception e)
                {
                    Logging.Logg().Exception(e, "MySQLtechsite::MySQLtechsite () - new MySqlConnection (...)", Logging.INDEX_MESSAGE.NOT_SET);
                    itssAUX.PrintErrorMessage(e.Message + Environment.NewLine);
                    iTechsiteInitialized = 1;
                }

                if (iTechsiteInitialized == 0)
                {
                    iTechsiteInitialized = techsite.Initialized;
                }
                else
                {
                    ;
                }
            }
            else
            {
                ;
            }

            if ((iTechsiteInitialized == 0) || (g_bList == true))
            {
                Console.WriteLine("Modes-Centre API Initializing - Please Wait..." + Environment.NewLine);

                ModesApiFactory.Initialize(GetNameHostModesCentre());

                if (ModesApiFactory.IsInitilized == true)
                {
                    var bContinue = true;
                    if (bNoWait == false)
                    {
                        ConsoleKeyInfo choice;
                        Console.Write("Continue (Y/N)...");
                        choice = Console.ReadKey();
                        //Console.WriteLine(choice.ToString ());
                        Console.WriteLine(Environment.NewLine);

                        if (!(choice.Key == ConsoleKey.Y))
                        {
                            bContinue = false;
                        }
                        else
                        {
                            ;
                        }
                    }
                    else
                    {
                    }

                    if (bContinue == true)
                    {
                        IApiExternal api_ = ModesApiFactory.GetModesApi();
                        LPFI = api_.GetPlanFactors();
                        DateTime dt = DateTime.Now.Date.LocalHqToSystemEx();    //"Дата начала суток по московскому времени в формате UTC" (из документации) - так по московскому или в UTC? Правильнее - дата-время начала суток в Москве по Гринвичу.
                        //dt = DateTime.Now.Date.ToUniversalTime();               //Вот это реально в UTC, но API выдаёт ошибку - не на начало суток указывает
                        //dt = TimeZoneInfo.ConvertTimeFromUtc(DateTime.Now.Date.ToUniversalTime(), TimeZoneInfo.FindSystemTimeZoneById("Russian Standard Time"));    //Вот это Московское, но API его не принимает - требует в UTC
                        //dt = TimeZoneInfo.ConvertTime(DateTime.Now.Date, TimeZoneInfo.FindSystemTimeZoneById("Russian Standard Time"));

                        TimeSpan dtSpan = TimeSpan.Zero;
                        if (g_bList == true)
                        {
                            dtSpan = g_dtList.Date.LocalHqToSystemEx() - dt;
                        }
                        else
                        {
                            ;
                        }

                        Modes.BusinessLogic.IModesTimeSlice ts = api_.GetModesTimeSlice(dt.AddHours(dtSpan.TotalHours), SyncZone.First, TreeContent.PGObjects, true);

                        foreach (Modes.BusinessLogic.IGenObject IGO in ts.GenTree)
                        {
                            Console.WriteLine(IGO.Description + " [" + IGO.GenObjType.Description + "]");
                            ProcessParams(IGO);
                            ProcessChilds(IGO, 1, api_);
                        }

                        if (g_bList == false)
                        {
                            //А время апдейта (поле wr_date_time) Новосибирское
                            Console.WriteLine(Environment.NewLine + "Время Московское, в т.ч. при записи в БД. В поле wr_date_time - Новосибирское." + Environment.NewLine);

                            techsite.FlushDataToDatabase();
                        }
                        else
                        {
                            Console.WriteLine(string.Empty);
                        }
                    }
                    else
                    {
                        ; //Пользователь не захотел продолжать
                    }
                }
                else
                {
                    itssAUX.PrintErrorMessage("Ошибка инициализации API Modes-Centre при обращении к сервису.");
                }
            }
            else
            {     //Не инициализировано соединение с БД Статистика
                if (iTechsiteInitialized > 0)
                { //Нет соединения с БД (конфигурации или назаначения)
                }
                else
                {
                    switch (iTechsiteInitialized)
                    {
                    case -1:
                        itssAUX.PrintErrorMessage("Ошибка! MySQLtechsite::MySQLtechsite () - список идентификаторов ГТП пуст...");
                        break;

                    default:
                        break;
                    }
                }
            }

            messageToExit(bNoWait);
        }
コード例 #7
0
        /// <summary>
        /// Установить соединение с Модес-Центром и подготовить объект соединения к запросам
        /// </summary>
        /// <returns>Результат установления соединения и инициализации</returns>
        protected override bool Connect()
        {
            string msgLog = string.Empty;

            if (m_connectionSettings == null)
            {
                return(false);
            }
            else
            {
                ;
            }

            if (m_connectionSettings.GetType().Equals(typeof(string)) == false)
            {
                return(false);
            }
            else
            {
                ;
            }

            if (!(((string)m_connectionSettings).Length > 0))
            {
                return(false);
            }
            else
            {
                ;
            }

            bool result = false, bRes = false;

            try {
                if (bRes == true)
                {
                    return(bRes);
                }
                else
                {
                    bRes = true;
                }
            } catch (Exception e) {
                Logging.Logg().Exception(e, "DbMCInterface::Connect ()", Logging.INDEX_MESSAGE.NOT_SET);
            }

            lock (lockConnectionSettings)
            {
                if (needReconnect == true) // если перед приходом в данную точку повторно были изменены настройки, то подключения со старыми настройками не делаем
                {
                    return(false);
                }
                else
                {
                    ;
                }
            }

            msgLog = string.Format("Соединение с Modes-Centre ({0})", (string)m_connectionSettings);

            try {
                ModesApiFactory.Initialize((string)m_connectionSettings);

                Logging.Logg().Debug(string.Format(@"{0} - ...", msgLog), Logging.INDEX_MESSAGE.NOT_SET);
            } catch (Exception e) {
                Logging.Logg().Exception(e, string.Format(@"{0} - ...", msgLog), Logging.INDEX_MESSAGE.NOT_SET);
            }

            bRes       =
                result =
                    ModesApiFactory.IsInitilized;

            if (bRes == true)
            {
                // на случай перезагрузки сервера Модес-центр
                try {
                    m_MCApi       = ModesApiFactory.GetModesApi();
                    m_MCTimeSlice = m_MCApi.GetModesTimeSlice(DateTime.Now.Date.LocalHqToSystemEx(), SyncZone.First, TreeContent.PGObjects, true);
                    m_listPFI     = m_MCApi.GetPlanFactors();

                    m_MCApi.OnData53500Modified += mcApi_OnEventHandler;
                    m_MCApi.OnPlanDataChanged   += mcApi_OnEventHandler;
                    m_MCApi.OnMaket53500Changed += mcApi_OnEventHandler;

                    Logging.Logg().Debug(string.Format(@"{0} - {1}...", msgLog, @"УСПЕХ"), Logging.INDEX_MESSAGE.NOT_SET);
                } catch (Exception e) {
                    Logging.Logg().Exception(e, string.Format(@"{0} - ...", msgLog), Logging.INDEX_MESSAGE.NOT_SET);

                    result = false;
                }
            }
            else
            {
                Logging.Logg().Debug(string.Format(@"{0} - {1}...", msgLog, @"ОШИБКА"), Logging.INDEX_MESSAGE.NOT_SET);
            }

            return(result);
        }
コード例 #8
0
        protected override bool Connect()
        {
            if (!(((string)m_connectionSettings).Length > 0))
            {
                return(false);
            }
            else
            {
                ;
            }

            bool result = false, bRes = false;

            try
            {
                if (bRes == true)
                {
                    return(bRes);
                }
                else
                {
                    bRes = true;
                }
            }
            catch (Exception e)
            {
                Logging.Logg().Exception(e, Logging.INDEX_MESSAGE.NOT_SET, "DbMCInterface::Connect ()");
            }

            lock (lockConnectionSettings)
            {
                if (needReconnect == true) // если перед приходом в данную точку повторно были изменены настройки, то подключения со старыми настройками не делаем
                {
                    return(false);
                }
                else
                {
                    ;
                }
            }

            try
            {
                ModesApiFactory.Initialize((string)m_connectionSettings);

                Logging.Logg().Debug("Соединение с Modes-Centre (" + (string)m_connectionSettings + ")", Logging.INDEX_MESSAGE.NOT_SET);
            }
            catch (Exception e)
            {
                Logging.Logg().Exception(e, Logging.INDEX_MESSAGE.NOT_SET, "Ошибка соединения с Modes-Centre (" + (string)m_connectionSettings + ")");
            }

            bRes       =
                result =
                    ModesApiFactory.IsInitilized;

            if (bRes == true)
            {
                m_MCApi       = ModesApiFactory.GetModesApi();
                m_MCTimeSlice = m_MCApi.GetModesTimeSlice(DateTime.Now.Date.LocalHqToSystemEx(), SyncZone.First, TreeContent.PGObjects, true);
                m_listPFI     = m_MCApi.GetPlanFactors();
            }
            else
            {
                ;
            }

            Logging.Logg().Debug("Соединение с Modes-Centre(" + (string)m_connectionSettings + ") - УСПЕХ", Logging.INDEX_MESSAGE.NOT_SET);

            return(result);
        }
コード例 #9
0
        /// <summary>
        /// Установить соединение с Модес-Центром и подготовить объект соединения к запросам
        /// </summary>
        /// <returns>Результат установления соединения и инициализации</returns>
        protected override bool Connect()
        {
            string msgLog = string.Empty;

            if (m_connectionSettings == null)
            {
                return(false);
            }
            else
            {
                ;
            }

            if (m_connectionSettings.GetType().Equals(typeof(string)) == false)
            {
                return(false);
            }
            else
            {
                ;
            }

            if (!(((string)m_connectionSettings).Length > 0))
            {
                return(false);
            }
            else
            {
                ;
            }

            bool result = false, bRes = false;

            try {
                if (bRes == true)
                {
                    return(bRes);
                }
                else
                {
                    bRes = true;
                }
            } catch (Exception e) {
                Logging.Logg().Exception(e, "DbMCInterface::Connect ()", Logging.INDEX_MESSAGE.NOT_SET);
            }

            lock (lockConnectionSettings)
            {
                if (IsNeedReconnectNew == true) // если перед приходом в данную точку повторно были изменены настройки, то подключения со старыми настройками не делаем
                {
                    return(false);
                }
                else
                {
                    ;
                }
            }

            msgLog = string.Format("Соединение с Modes-Centre ({0})", (string)m_connectionSettings);

            try {
                ModesApiFactory.Initialize((string)m_connectionSettings);

                Logging.Logg().Debug(string.Format(@"{0} - ...", msgLog), Logging.INDEX_MESSAGE.NOT_SET);
            } catch (Exception e) {
                Logging.Logg().Exception(e, string.Format(@"{0} - ...", msgLog), Logging.INDEX_MESSAGE.NOT_SET);
            }

            bRes       =
                result =
                    ModesApiFactory.IsInitilized;

            bool bEventHandler = false;
            IEnumerable <Delegate /*MethodInfo*/> handlers;

            if (bRes == true)
            {
                // на случай перезагрузки сервера Модес-центр
                try {
                    m_MCApi          = ModesApiFactory.GetModesApi();
                    m_modesTimeSlice = m_MCApi.GetModesTimeSlice(DateTime.Now.Date.LocalHqToSystemEx(), SyncZone.First, TreeContent.PGObjects, true);
                    m_listPFI        = m_MCApi.GetPlanFactors();

                    #region добавить обработчики для проверки возможности их удаления
                    //m_MCApi.OnClose += mcApi_OnClose;
                    //m_MCApi.OnData53500Modified += new EventHandler<Modes.NetAccess.EventRefreshData53500> (mcApi_OnEventHandler);
                    //m_MCApi.OnMaket53500Changed += mcApi_OnEventHandler;
                    //m_MCApi.OnPlanDataChanged += mcApi_OnEventHandler;
                    #endregion

                    #region Отмена регистрация неуниверсальных обработчиков
                    //List<ParameterInfo> handlerParameters;
                    //handlers = getHandlerExists (m_MCApi);

                    //foreach (Delegate handler in handlers.ToList ()) {
                    //    handlerParameters = handler.Method.GetParameters ().ToList();
                    //    if (handlerParameters.Count () == 2)
                    //        if (typeof (Modes.NetAccess.EventRefreshData53500).IsAssignableFrom (handlerParameters [1].GetType ()) == true)
                    //            m_MCApi.OnData53500Modified -= (EventHandler<Modes.NetAccess.EventRefreshData53500>)handler;
                    //        else if (typeof (Modes.NetAccess.EventRefreshJournalMaket53500).IsAssignableFrom (handlerParameters [1].GetType ()) == true)
                    //            m_MCApi.OnMaket53500Changed -= (EventHandler<Modes.NetAccess.EventRefreshJournalMaket53500>)handler;
                    //        else if (typeof (Modes.NetAccess.EventPlanDataChanged).IsAssignableFrom (handlerParameters [1].GetType ()) == true)
                    //            m_MCApi.OnPlanDataChanged -= (EventHandler<Modes.NetAccess.EventPlanDataChanged>)handler;
                    //        else
                    //            ;
                    //    else if (handlerParameters.Count () == 0)
                    //        m_MCApi.OnClose -= (EventHandler)handler;
                    //    else
                    //        ;
                    //}
                    //// проверить
                    //handlers = getHandlerExists (m_MCApi);
                    #endregion

                    #region Отмена регистрации универсального обработчика
                    List <string> eventNames = new List <string> ()
                    {
                        "OnClose"
                        , "OnData53500Modified", "OnMaket53500Changed", "OnPlanDataChanged"
                    };

                    foreach (string eventName in eventNames)
                    {
                        foreach (Delegate handler in getHandlerExists(m_MCApi, eventName))
                        {
                            switch (eventNames.IndexOf(eventName))
                            {
                            case 0:
                                m_MCApi.OnClose -= (EventHandler)handler;
                                break;

                            case 1:
                                m_MCApi.OnData53500Modified -= (EventHandler <Modes.NetAccess.EventRefreshData53500>)handler;
                                break;

                            case 2:
                                m_MCApi.OnMaket53500Changed -= (EventHandler <Modes.NetAccess.EventRefreshJournalMaket53500>)handler;
                                break;

                            case 3:
                                m_MCApi.OnPlanDataChanged -= (EventHandler <Modes.NetAccess.EventPlanDataChanged>)handler;
                                break;

                            default:
                                break;
                            }
                        }
                    }
                    // проверить
                    handlers = getHandlerExists(m_MCApi);
                    #endregion

                    m_MCApi.OnClose += mcApi_OnClose;

                    // добавить обработчики в соответствии с конфигурацией
                    if (_jsonEventListener.Count > 0)
                    {
                        foreach (DbMCInterface.EVENT nameEvent in Enum.GetValues(typeof(DbMCInterface.EVENT)))
                        {
                            if (nameEvent == DbMCInterface.EVENT.Unknown)
                            {
                                continue;
                            }
                            else
                            {
                                ;
                            }

                            bEventHandler = bool.Parse(_jsonEventListener.Value <string> (nameEvent.ToString()));

                            delegateMCApiHandler(Tuple.Create <EVENT, bool> (nameEvent, bEventHandler));

                            if (bEventHandler == true)
                            {
                                switch (nameEvent)
                                {
                                case EVENT.OnData53500Modified:
                                    m_MCApi.OnData53500Modified += mcApi_OnEventHandler;
                                    break;

                                case EVENT.OnMaket53500Changed:
                                    m_MCApi.OnMaket53500Changed += mcApi_OnEventHandler;
                                    break;

                                case EVENT.OnPlanDataChanged:
                                    m_MCApi.OnPlanDataChanged += mcApi_OnEventHandler;
                                    break;

                                case EVENT.OnModesEvent:
                                    m_MCApi.OnModesEvent += mcApi_OnModesEvent;
                                    break;

                                default:
                                    break;
                                }
                            }
                            else
                            {
                                ;
                            }
                        }
                    }
                    else
                    {
                        // нет ни одного правила для (отмены)регистрации события
                        ;
                    }

                    //// проверить
                    //handlers = getHandlerExists (m_MCApi);

                    Logging.Logg().Debug(string.Format(@"{0} - {1}...", msgLog, @"УСПЕХ"), Logging.INDEX_MESSAGE.NOT_SET);
                } catch (Exception e) {
                    Logging.Logg().Exception(e, string.Format(@"{0} - ...", msgLog), Logging.INDEX_MESSAGE.NOT_SET);

                    result = false;
                }
            }
            else
            {
                Logging.Logg().Debug(string.Format(@"{0} - {1}...", msgLog, @"ОШИБКА"), Logging.INDEX_MESSAGE.NOT_SET);
            }

            lock (mcApiEventLocked) {
                delegateMCApiHandler?.Invoke(bRes);
            }

            return(result);
        }
コード例 #10
0
        /// <summary>
        /// Установить соединение с Модес-Центром и подготовить объект соединения к запросам
        /// </summary>
        /// <returns>Результат установления соединения и инициализации</returns>
        protected override bool Connect()
        {
            string msgLog = string.Empty;
            bool   result = false
            , bRes        = false;
            //Task<bool> taskInitialized;
            CancellationToken cancelTokenInitialized;

            if (m_connectionSettings == null)
            {
                return(false);
            }
            else
            {
                ;
            }

            if (m_connectionSettings.GetType().Equals(typeof(string)) == false)
            {
                return(false);
            }
            else
            {
                ;
            }

            if (!(((string)m_connectionSettings).Length > 0))
            {
                return(false);
            }
            else
            {
                ;
            }

            result   =
                bRes =
                    false;

            //??? 'bRes' не м.б. 'True'
            try {
                if (bRes == true)
                {
                    return(bRes);
                }
                else
                {
                    bRes = true;
                }
            } catch (Exception e) {
                Logging.Logg().Exception(e, "DbMCInterface::Connect ()", Logging.INDEX_MESSAGE.NOT_SET);
            }

            lock (lockConnectionSettings)
            {
                if (IsNeedReconnectNew == true) // если перед приходом в данную точку повторно были изменены настройки, то подключения со старыми настройками не делаем
                {
                    return(false);
                }
                else
                {
                    ;
                }
            }

            msgLog = string.Format("Соединение с Modes-Centre ({0})", (string)m_connectionSettings);

            try {
                Logging.Logg().Debug(string.Format(@"{0} - ...", msgLog), Logging.INDEX_MESSAGE.NOT_SET);

                _cancelTokenSourceInitialized = new CancellationTokenSource();
                cancelTokenInitialized        = _cancelTokenSourceInitialized.Token;

                using (Task <bool> taskInitialized = Task <bool> .Factory.StartNew(delegate() {
                    ModesApiFactory.Initialize((string)m_connectionSettings);

                    return(ModesApiFactory.IsInitilized);
                }, cancelTokenInitialized)) {
                    taskInitialized.Wait(cancelTokenInitialized);

                    bRes       =
                        result =
                            taskInitialized.Status == TaskStatus.RanToCompletion ? taskInitialized.Result : false;
                }

                _cancelTokenSourceInitialized.Dispose(); _cancelTokenSourceInitialized = null;
            } catch (Exception e) {
                Logging.Logg().Exception(e, string.Format(@"{0} - ...", msgLog), Logging.INDEX_MESSAGE.NOT_SET);
            }

            if (bRes == true)
            {
                // на случай перезагрузки сервера Модес-центр
                try {
                    m_iConnectCounter++;

                    m_MCApi          = ModesApiFactory.GetModesApi();
                    m_modesTimeSlice = m_MCApi.GetModesTimeSlice(DateTime.Now.Date.LocalHqToSystemEx(), SyncZone.First, TreeContent.PGObjects, true);
                    m_listPFI        = m_MCApi.GetPlanFactors();

                    result = unregisterHandler();

                    if (result == true)
                    {
                        result = registerHandler();
                    }
                    else
                    {
                        ;
                    }

                    if (result == true)
                    {
                        Logging.Logg().Debug(string.Format(@"{0} - {1}...", msgLog, @"УСПЕХ"), Logging.INDEX_MESSAGE.NOT_SET);
                    }
                    else
                    {
                        Logging.Logg().Error(string.Format(@"{0} - {1}; не выполнена регистрация/отмена регистрации подписчиков на события...", msgLog, @"ОШИБКА"), Logging.INDEX_MESSAGE.NOT_SET);
                    }
                } catch (Exception e) {
                    Logging.Logg().Exception(e, string.Format(@"{0} - ...", msgLog), Logging.INDEX_MESSAGE.NOT_SET);

                    result = false;
                }
            }
            else
            {
                Logging.Logg().Debug(string.Format(@"{0} - {1}...", msgLog, @"ОШИБКА"), Logging.INDEX_MESSAGE.NOT_SET);
            }

            lock (mcApiEventLocked) {
                delegateMCApiHandler?.Invoke(bRes);
            }

            return(result);
        }