/// <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}"); } } }
/// <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(); } }