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(); }
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日志>().初始化(); }
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客户端.连接(__服务器地址); }
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()); } }