Пример #1
0
        void do连接_Click(object sender, EventArgs e)
        {
            var __ip   = this.inIP2.Text;
            var __port = this.in端口号.Text;
            var __最后访问 = _访问记录.Find(q => q.IP.ToString() == __ip && q.端口号.ToString() == __port);

            if (__最后访问 == null)
            {
                if (!H检测网络.IsHostAlive(__ip, int.Parse(__port), 2000))
                {
                    new F对话框_确定("连接失败").ShowDialog();
                    return;
                }
                else
                {
                    __最后访问 = new M访问记录 {
                        IP = __ip, 端口号 = int.Parse(__port)
                    };
                }
            }
            else
            {
                _访问记录.Remove(__最后访问);
            }
            _访问记录.Insert(0, __最后访问);

            H程序配置.设置("访问记录", H序列化.ToJSON字符串(_访问记录));
            H日志输出.设置(q =>
            {
                if (q.等级 <= TraceEventType.Information)
                {
                    if (q.异常 != null)
                    {
                        H日志.记录异常(q.异常, q.概要, q.详细, q.等级, q.方法, q.文件, q.行号);
                    }
                    else
                    {
                        H日志.记录(q.概要, q.等级, q.详细, q.方法, q.文件, q.行号);
                    }
                }
            });
            _IT客户端 = FT通用访问工厂.创建客户端();
            H容器.注入 <IT客户端>(_IT客户端, false);
            _IT客户端.自动重连 = true;
            _IT客户端.已断开 += q => 设置连接状态();
            _IT客户端.已连接 += 设置连接状态;
            _IT客户端.连接(new IPEndPoint(IPAddress.Parse(__ip), int.Parse(__port)));
            this.ParentForm.ShowInTaskbar = false;
            this.ParentForm.Visible       = false;
            _F主窗口 = new F空窗口(new F主窗口(), "");
            设置连接状态();
            _F主窗口.FormClosing += OnClosing;
            _F主窗口.ShowDialog();
        }
Пример #2
0
        public void 配置()
        {
            var __调试编解码 = H程序配置.获取Bool值("调试编解码");

            H日志输出.设置(q =>
            {
                if (q.等级 < TraceEventType.Information || __调试编解码)
                {
                    if (q.异常 != null)
                    {
                        H日志.记录异常(q.异常, q.概要, q.详细, q.等级, q.方法, q.文件, q.行号);
                    }
                    else
                    {
                        H日志.记录(q.概要, q.等级, q.详细, q.方法, q.文件, q.行号);
                    }
                }
            }, TraceEventType.Verbose);
            _IT服务端    = FT通用访问工厂.创建服务端();
            _IT服务端.端口 = H程序配置.获取Int32值("端口号");
            H容器.注入(_IT服务端, false);
            B通用命令.配置(_IT服务端);

            H容器.注入 <IB数据库, B数据库>();
            H容器.注入 <IB插件, B插件>();
            H容器.注入 <IB订阅, B订阅>();
            H容器.注入 <IBGPS数据, BGPS数据>();
            if (H程序配置.获取Bool值("内存数据库"))
            {
                H容器.注入 <ID数据库, D数据库_内存>();
                H容器.注入 <IDGPS数据, DGPS数据_内存>(__拦截: false);
                H容器.注入 <IB日志, B日志_内存>(__拦截: false);
            }
            else
            {
                H容器.注入 <ID数据库, D数据库>();
                H容器.注入 <IDGPS数据, DGPS数据>(__拦截: false);
                H容器.注入 <IB日志, B日志_内存>(__拦截: false); //未保存到数据库
            }
            H容器.注入 <IBGPS过滤, BGPS过滤>(__拦截: false);

            H容器.取出 <IB数据库>().初始化();
            H容器.取出 <IB订阅>().初始化();
            H容器.取出 <IB插件>().初始化();
            H容器.取出 <IBGPS数据>().初始化();
            H容器.取出 <IB日志>().初始化();
        }
Пример #3
0
 public static void 连接(IPEndPoint __服务器地址, bool __自动重连 = true)
 {
     if (_IT客户端 == null)
     {
         H日志输出.设置(q =>
         {
             if (H程序配置.获取Bool值("调试编解码"))
             {
                 H日志.记录(q.概要, q.等级, q.详细, q.方法, q.文件, q.行号);
             }
         }, System.Diagnostics.TraceEventType.Verbose);
         _IT客户端      = FT通用访问工厂.创建客户端();
         _IT客户端.自动重连 = __自动重连;
         _IT客户端.已连接 += On已连接;
         _IT客户端.已断开 += On已断开;
     }
     _IT客户端.连接(__服务器地址);
 }
Пример #4
0
        public void 监控下执行 <T>(string __队列名称, T __数据, int __接收时间, Action <T> __处理数据)
        {
            var __延迟 = Environment.TickCount - __接收时间;

            Interlocked.Add(ref _总延时, __延迟);

            var __计时器 = new Stopwatch();

            __计时器.Start();
            __处理数据(__数据);
            var __耗时 = __计时器.ElapsedMilliseconds;

            Interlocked.Add(ref _总耗时, __耗时);
            Interlocked.Add(ref _数量, 1);
            if (_数量 >= _分组统计数量)
            {
                var __日志 = new StringBuilder();
                __日志.AppendFormat("处理数量 {0},", _数量);
                __日志.AppendFormat("总耗时 {0},", _总耗时);
                __日志.AppendFormat("平均处理耗时 {0} 毫秒,", _总耗时 / _数量);
                __日志.AppendFormat("平均延迟 {0},", _总延时 / _数量);
                H日志.记录("统计", _总延时 / _数量 > _延迟阈值 ? TraceEventType.Warning : TraceEventType.Information, __日志.ToString());
                Interlocked.Exchange(ref _数量, 0);
                Interlocked.Exchange(ref _总耗时, 0);
                Interlocked.Exchange(ref _总延时, 0);
            }
            if (__耗时 > _耗时阈值)
            {
                var __日志 = new StringBuilder();
                __日志.AppendFormat("处理 {0} ,", __数据);
                __日志.AppendFormat("耗时 {0} 毫秒. ", __计时器.ElapsedMilliseconds);
                H调试.记录提示("耗时告警:" + __队列名称, __日志.ToString());
            }
            if (__延迟 > _延迟阈值)
            {
                var __日志 = new StringBuilder();
                __日志.AppendFormat("处理 {0} ,", __数据);
                __日志.AppendFormat("延迟 {0} 毫秒, ", __延迟);
                H调试.记录提示("延迟:" + __队列名称, __日志.ToString());
            }
        }