示例#1
0
        public static void 强制关闭(string 务名称, string 进程名称)
        {
            H调试.记录提示(string.Format("准备关闭 {0} 服务", 务名称));
            关闭(务名称);
            var __服务状态 = 查询状态(务名称);

            if (__服务状态 != ServiceControllerStatus.Stopped)
            {
                H调试.记录提示(string.Format("未能正常关闭服务, 准备关闭 {0} 的进程'{1}'", 务名称, 进程名称));
                var __进程列表 = Process.GetProcesses().ToList().FindAll(q => q.ProcessName == 进程名称);
                H调试.记录提示("找到进程数: " + __进程列表.Count);
                if (__进程列表.Count > 0)
                {
                    foreach (var process in __进程列表)
                    {
                        try
                        {
                            process.Kill();
                            process.WaitForExit();
                        }
                        catch (Exception ex)
                        {
                            H调试.记录异常(ex, string.Format("关闭服务失败, 服务名称: {0}, 服务进程: {1}", 务名称, 进程名称));
                        }
                    }
                }
            }
        }
示例#2
0
 public void 关闭()
 {
     H调试.记录提示("关闭");
     if (_监听器 != null)
     {
         _监听器.Close();
     }
     已开启 = false;
 }
示例#3
0
        public void 开启()
        {
            if (!HttpListener.IsSupported)
            {
                Debug.WriteLine("Windows XP SP2 or Server 2003 is required to use the HttpListener class.");
                return;
            }
            if (_监听器 != null && _监听器.IsListening)
            {
                return;
            }

            _监听器 = new HttpListener();
            _监听器.Prefixes.Add(string.Format("http://localhost:{0}/", 端口));
            _监听器.Prefixes.Add(string.Format("http://127.0.0.1:{0}/", 端口));
            var __本机IP列表 = Dns.GetHostAddresses(Dns.GetHostName()).Where(q => q.AddressFamily == AddressFamily.InterNetwork).ToList();

            __本机IP列表.ForEach(q => _监听器.Prefixes.Add(string.Format("http://{1}:{0}/", 端口, q)));
            _监听器.Start();
            已开启 = true;
            H调试.记录提示("已开启");
            new Thread(() =>
            {
                try
                {
                    while (_监听器.IsListening)
                    {
                        _监听器.BeginGetContext(处理请求, _监听器).AsyncWaitHandle.WaitOne();
                    }
                }
                catch (Exception ex)
                {
                    if (已开启)
                    {
                        H调试.记录异常(ex);
                    }
                }
                已开启 = false;
            })
            {
                IsBackground = true
            }.Start();
        }
示例#4
0
        public static void 关闭(string __服务名, System.TimeSpan __超时)
        {
            var __服务 = ServiceController.GetServices().ToList().Find(q => q.ServiceName == __服务名);

            if (__服务 != null && __服务.Status == ServiceControllerStatus.Running)
            {
                __服务.Stop();
                __服务.WaitForStatus(ServiceControllerStatus.Stopped, __超时);
            }
            else
            {
                if (__服务 == null)
                {
                    H调试.记录提示(string.Format("服务 {0} 不存在", __服务名));
                    return;
                }
                H调试.记录提示(string.Format("服务 {0} 没在运行中, 当前状态: {1}", __服务名, __服务.Status));
            }
        }
示例#5
0
        public static void 开启(string __服务名, System.TimeSpan __超时)
        {
            var __服务 = ServiceController.GetServices().ToList().Find(q => q.ServiceName == __服务名);

            if (__服务 != null && __服务.Status != ServiceControllerStatus.Running)
            {
                __服务.Start();
                __服务.WaitForStatus(ServiceControllerStatus.Running, __超时);
            }
            else
            {
                if (__服务 == null)
                {
                    H调试.记录提示(string.Format("服务 {0} 不存在", __服务名));
                    return;
                }
                H调试.记录提示(string.Format("服务 {0} 正在运行, 无需开启", __服务名));
            }
        }
示例#6
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());
            }
        }