/// <summary>
        /// 启动本服务,调度初始化
        /// </summary>
        /// <param name="args"></param>
        protected override void OnStart(string[] args)
        {
            AutoLog = true;
            try
            {
                LogInToEvent.WriteInfo("尝试启动");
                InitAndStart();
            }
            catch (Exception e)
            {
                LogInToEvent.WriteError(e.ToString());

                System.Diagnostics.Process.GetCurrentProcess().Kill();
            }
        }
        /// <summary>
        /// 在web访问到来时取得访问报告,并返回给用户
        /// </summary>
        /// <param name="a"></param>
        void Web_AfterConnectionGetReportAndSendToUser(object a)
        {
            System.Net.Sockets.TcpClient socketcomein = a as System.Net.Sockets.TcpClient;

            if (socketcomein == null)
            {
                LogInToEvent.WriteError("未知错误:socketcomein == null");
                return;
            }
            try
            {
                var stream = socketcomein.GetStream();
                System.IO.StreamReader rstream = new System.IO.StreamReader(stream);
                string i = rstream.ReadLine();
                var where = i.Split(new string[] { " " }, StringSplitOptions.RemoveEmptyEntries);
                if (!
                    (where.Length == 3 &&
                     where[1].Trim().StartsWith("/"))
                    )
                {
                    string errorMessage = "请求格式错误,请发送 GET / HTTP1.1 \n" + i;
                    foreach (var p in where)
                    {
                        errorMessage += "\n" + p + "\n";
                    }
                    var error_gs = System.Text.Encoding.UTF8.GetBytes(errorMessage);
                    stream.Write(error_gs, 0, error_gs.Length);
                    stream.Close();
                    socketcomein.Close();
                    return;
                }
                string report = Web_GetReport(where[1]);
                string head   = "http/1.1 200 ok\n" +
                                "Content-Type: text/html\n";
                byte[] content = System.Text.Encoding.UTF8.GetBytes(report);
                head += "Content-Length:" + content.Length + "\n\n";
                var headstr = System.Text.Encoding.UTF8.GetBytes(head);
                stream.Write(headstr, 0, headstr.Length);
                stream.Write(content, 0, content.Length);
                stream.Close();
                socketcomein.Close();
            }
            catch (Exception e)
            {
                LogInToEvent.WriteError(e.ToString());
                return;
            }
        }
 /// <summary>
 /// 用于等待web访问,web访问线程的执行方
 /// </summary>
 void Web_WaitWebConnection()
 {
     System.Net.Sockets.TcpListener listener = new System.Net.Sockets.TcpListener(System.Net.IPAddress.Any, PORT);
     try
     {
         listener.Start();
     }
     catch (System.Net.Sockets.SocketException)
     {
         //已经被占用
         LogInToEvent.WriteError("端口" + PORT.ToString() + "已经被占用");
         System.Diagnostics.Process.GetCurrentProcess().Kill();
     }
     while (true)
     {
         var comein  = listener.AcceptTcpClient();
         var dealing = new System.Threading.Thread(new System.Threading.ParameterizedThreadStart(Web_AfterConnectionGetReportAndSendToUser));
         dealing.Start(comein);
     }
 }
        /// <summary>
        /// 如果需要的话,调度刷新。刷新线程调度项目
        /// </summary>
        /// <param name="count">当前执行该函数的为第几个线程</param>
        void Scan_DecideIfNeedsScanAndDispatchScan(object count)
        {
            int currItemCount = (int)count;

            while (true)
            {
                try
                {
                    LogInToEvent.WriteDebug("试图取得待操作对象");
                    Datastructs.Commands.ICommand nowUsingItem = null;
                    lock (lockServQueue)
                    {
                        if (!servQueue.IsEmpty())
                        {
                            nowUsingItem = servQueue.Dequeue();
                        }
                    }
                    if (nowUsingItem != null)
                    {
                        lock (lockservItem)
                        {
                            servItem[currItemCount] = nowUsingItem;
                        }

                        //执行操作
                        if (nowUsingItem.IfNeedExecution)
                        {
                            nowUsingItem.DoCommand();
                        }
                        else
                        {
                            System.Threading.Thread.Sleep(1000);
                        }
                        if (nowUsingItem.IsImmuable)
                        {
                            lock (lockServQueue)
                            {
                                servQueue.Enqueue(nowUsingItem, DEFAULT_LOW_PRI);
                            }
                        }
                        lock (lockservItem)
                        {
                            servItem[currItemCount] = null;
                        }
                    }
                    else
                    {
                        //等着看看
                        lock (lockservItem)
                        {
                            servItem[currItemCount] = null;
                        }
                        LogInToEvent.WriteDebug("取得待操作对象失败,休眠100s");
                        System.Threading.Thread.Sleep(100000);
                    }
                }
                catch (Exception e)
                {
                    LogInToEvent.WriteError(e.ToString());
                    DisableGetObjects.Log.OverallLog.LogForErr(e.ToString());
                }
            }
        }