Ejemplo n.º 1
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++;
            }
        }
Ejemplo n.º 2
0
        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 = "Отключиться";
                }
            }
        }
Ejemplo n.º 3
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);
        }
Ejemplo n.º 4
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);
        }
Ejemplo n.º 5
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);
        }
Ejemplo n.º 6
0
        public MCServerReader(DateTime date, bool writeNPBR = true)
        {
            Logger.Info("Чтение ПБР за " + date.ToString());
            Date         = date;
            AutooperData = new List <string>();
            Logger.Info("Connect MC");
            ProcessedPBRS = new Dictionary <int, MCPBRData>();

            try {
                modesConnect();
                SyncZone zone = SyncZone.First;

                IModesTimeSlice ts = null;
                ts = api.GetModesTimeSlice(date.Date.LocalHqToSystemEx(), zone
                                           , TreeContent.PGObjects              /*только оборудование, по которому СО публикует ПГ(включая родителей)*/
                                           , false);


                bool ok = true;
                foreach (IGenObject obj in ts.GenTree)
                {
                    ok = ok && getPlan(obj);
                }

                if (ok)
                {
                    if (ProcessedPBRS.Count != 7)
                    {
                        Logger.Info("Количество ПБР !=7. Отправка в автооператор не производится");
                    }
                    else
                    {
                        foreach (MCPBRData pbr in ProcessedPBRS.Values)
                        {
                            pbr.CreateData();
                            pbr.addAutooperData(AutooperData);
                        }
                        Logger.Info("АО кол.строк " + AutooperData.Count);
                        if (AutooperData.Count == 100)
                        {
                            Logger.Info("Отправка в АО кол.строк ");
                            try {
                                sendAutooperData();
                                Logger.Info("Данный отправлены  в АО");
                            } catch (Exception e) {
                                Logger.Info("Ошибка при отправке данных в АО");
                                Logger.Info(e.ToString());
                            }
                        }
                        else
                        {
                            Logger.Info("Неверное количество данных в АО");
                        }
                    }
                }
                //return;

                if (ok)
                {
                    Logger.Info("Зaпись ПБР в Базу");
                    foreach (MCPBRData pbr in ProcessedPBRS.Values)
                    {
                        try {
                            pbr.CreateData();
                            bool okWrite = false;
                            int  i       = 0;
                            while (!okWrite && i < 3)
                            {
                                Logger.Info(String.Format("Запись {0} ПБР. Попытка {1}", pbr.Item, i));
                                okWrite = pbr.ProcessData();
                                i++;
                            }
                        } catch {
                            Logger.Info("Ошибка при записи ПБР в базу");
                        }
                    }
                    Logger.Info("Запись номера ПБР");

                    DateTime             ds  = DateTime.Now;
                    DateTime             de  = this.Date.AddDays(1);
                    List <ShadeSelector> sel = new List <ShadeSelector>();
                    sel.Add(new ShadeSelector()
                    {
                        period = new TimePeriod()
                        {
                            from = new Timestamp()
                            {
                                second = EDSClass.toTS(ds)
                            },
                            till = new Timestamp()
                            {
                                second = EDSClass.toTS(de)
                            }
                        },
                        pointId = new PointId()
                        {
                            iess = "NPBR.EDS@CALC"
                        }
                    });

                    Logger.Info("Удаление номера ПБР");
                    uint id = EDSClass.Client.requestShadesClear(EDSClass.AuthStr, sel.ToArray());
                    ok = EDSClass.ProcessQuery(id);

                    if (ok)
                    {
                        List <Shade>      shades = new List <Shade>();
                        List <ShadeValue> vals   = new List <ShadeValue>();
                        vals.Add(new ShadeValue()
                        {
                            period = new TimePeriod()
                            {
                                from = new Timestamp()
                                {
                                    second = EDSClass.toTS(ds)
                                },
                                till = new Timestamp()
                                {
                                    second = EDSClass.toTS(de)
                                }
                            },
                            quality = Quality.QUALITYGOOD,
                            value   = new PointValue()
                            {
                                av = NPBR, avSpecified = true
                            }
                        });
                        shades.Add(new Shade()
                        {
                            pointId = new PointId()
                            {
                                iess = "NPBR.EDS@CALC"
                            },
                            values = vals.ToArray()
                        });
                        Logger.Info("Запись данных");
                        id = EDSClass.Client.requestShadesWrite(EDSClass.AuthStr, shades.ToArray());
                        ok = EDSClass.ProcessQuery(id);
                    }
                }
            } catch (Exception e) {
                Logger.Info("Ошибка при получении ПБР с сервера MC " + e);
            } finally {
                ModesApiFactory.CloseConnection();
            }
        }
Ejemplo n.º 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 (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);
        }
Ejemplo n.º 8
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);
        }