Exemple #1
0
        public void Start(out string errMsg)
        {
            errMsg = "";

            if (IsRuning)
            {
                return;
            }

            try
            {
                TraceManager.Start(TriggerTrace);

                // 环境检查
                if (!EnvChecker.Check(out errMsg))
                {
                    return;
                }
                TraceManager.AppendDebug("环境检查通过");


                //数据库工作服务打开
                if (DBWorker.IsRuning)
                {
                    DBWorker.Stop();
                }
                DBWorker.Start();
                if (DBWorker.IsRuning)
                {
                    TraceManager.AppendDebug("数据库工作器已经打开");
                }
                else
                {
                    errMsg = "数据库工作器打开失败";
                    TraceManager.AppendErrMsg(errMsg);
                    Stop();
                    return;
                }


                // 打开DTU缓存管理器
                if (DTUCacheManager.IsRuning)
                {
                    DTUCacheManager.Stop();
                }
                DTUCacheManager.Start();
                if (DTUCacheManager.IsRuning)
                {
                    TraceManager.AppendDebug("DTU缓存管理器已经打开");
                }
                else
                {
                    errMsg = "DTU缓存管理器打开失败";
                    TraceManager.AppendErrMsg(errMsg);
                    Stop();
                    return;
                }

                // DTU通信器
                if (HDDTUService.IsRuning)
                {
                    HDDTUService.Stop();
                }
                HDDTUService.Start(out string err);
                if (HDDTUService.IsRuning)
                {
                    TraceManager.AppendDebug("DTU监听器已经打开");
                }
                else
                {
                    errMsg = "DTU控制器打开失败:" + err;
                    TraceManager.AppendErrMsg(errMsg);
                    Stop();
                    return;
                }

                // DTU控制器
                if (DTUController.IsRuning)
                {
                    DTUController.Stop();
                }
                DTUController.Start();
                if (DTUController.IsRuning)
                {
                    TraceManager.AppendDebug("DTU控制器已经打开");
                }
                else
                {
                    errMsg = "DTU控制器打开失败";
                    TraceManager.AppendErrMsg(errMsg);
                    Stop();
                    return;
                }

                // DTU监听器
                if (DTUListener.IsRuning)
                {
                    DTUListener.Stop();
                }
                DTUListener.Start();
                if (DTUListener.IsRuning)
                {
                    TraceManager.AppendDebug("DTU监听器已经打开");
                }
                else
                {
                    errMsg = "DTU监听器打开失败";
                    TraceManager.AppendErrMsg(errMsg);
                    Stop();
                    return;
                }
            }
            catch (Exception e)
            {
                errMsg = e.Message;
                Stop();
                return;
            }
            IsRuning = true;
        }