예제 #1
0
 /// <summary>
 /// 这里正好用获取服务器状态当心跳
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 void KeepHearBeat(object sender, System.ComponentModel.DoWorkEventArgs e)
 {
     while (true)
     {
         Thread.Sleep(_HearBeatSecond);
         try
         {
             string xl = myxml("", "", new List <string> {
                 ""
             });
             DateTime TimeStart = DateTime.Now;
             string   rxl       = MyISC.SynMessage("GetServerStatus", xl, "system", "ydh");
             double   timecost  = DateTime.Now.Subtract(TimeStart).TotalMilliseconds;
             XElement xmdata    = XElement.Parse(rxl);
             float    CPUload   = Convert.ToSingle(xmdata.Element("return").FirstNode.ToString());
             this.ResetCPU(CPUload, timecost);
             Console.WriteLine($"ClientKeepHearBeat Name:{this.ServerURL} CPUload:{CPUload}  timecost:{timecost}  CPUlevel:{this.ServerCPUloadLevel}");
         }
         catch (Exception me)
         {
             this.ServerAlive = false;
             this.isc         = null;
             if (this.ServerStatusChangingEvent != null)
             {
                 this.ServerStatusChangingEvent();
             }
             Console.WriteLine($"ClientKeepHearBeat Name:{this.ServerURL} 报错:{me.Message}");
         }
     }
 }
예제 #2
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="url"></param>
        /// <param name="HearBeatSecond">这里默认9分钟,因为默认10分钟无消息就自动释放了.</param>
        public WCFClient(string url, int HearBeatSecond = 1000 * 60 * 9, int cpuLevelNum = 20)
        {
            try
            {
                this.ServerURL       = url;
                address              = new EndpointAddress(url);
                this._HearBeatSecond = HearBeatSecond;
                this.CPULevelNum     = cpuLevelNum;

                //初始化
                string xl = myxml("", "", new List <string> {
                    ""
                });

                DateTime TimeStart = DateTime.Now;
                string   rxl       = MyISC.SynMessage("GetServerStatus", xl, "system", "ydh");
                double   timecost  = DateTime.Now.Subtract(TimeStart).TotalMilliseconds;

                XElement xmdata  = XElement.Parse(rxl);
                float    CPUload = Convert.ToSingle(xmdata.Element("return").FirstNode.ToString());
                this.ResetCPU(CPUload, timecost);
                Console.WriteLine($"初始化 Name:{this.ServerURL}  CPUload:{CPUload}  timecost:{timecost} CPUlevel:{this.ServerCPUloadLevel}");
                this.ServerAlive = true;
            }
            catch (Exception me)
            {
                this.isc = null;
                Console.WriteLine($"初始化  Name:{url} 初始化错误:{me.Message}");
                //throw me;
            }
            finally
            {
                HBbw         = new System.ComponentModel.BackgroundWorker();
                HBbw.DoWork += new System.ComponentModel.DoWorkEventHandler(KeepHearBeat);
                HBbw.RunWorkerAsync();
            }
        }