/// <summary> /// 心跳线程 /// </summary> private void Heart() { while (CommonFunction.flag_listener) { lock (CommonFunction.obj_66) { foreach (HeartInfo hi in CommonFunction.hearts.Values) { try { if (hi.Ke_al > 3) { hi.State = "异常"; hi.Ke_al = 00; Showmsg(hi.Id + "/" + hi.Type); //Thread me = new Thread(() => Message_f(hi)) //{ // IsBackground = true //}; //me.Start(); hi.State = "禁用"; //修改检测平台状态为异常 switch (hi.Type) { case "命令检测": Myadapter_p.UpdatePlatCom("异常", hi.Id); break; case "IC卡卡控": Myadapter_p.UpdatePlatIc("异常", hi.Id); break; case "膜式表初检": Myadapter_p.UpdatePlatChu_msb("异常", hi.Id); break; case "修正仪初检": Myadapter_p.UpdatePlatChu_xzy("异常", hi.Id); break; case "超声波初检": Myadapter_p.UpdatePlatChu_csb("异常", hi.Id); break; case "终检": Myadapter_p.UpdatePlatZho("异常", hi.Id); break; } Thread.Sleep(50); CommonFunction.platm.ChangePlat(); PostLl(hi.Id.ToString(), hi.Type, "异常"); DT_WaringPlatTableAdapter myadapter_wp = new DT_WaringPlatTableAdapter(); DataTable dtw = myadapter_wp.GetDataBy_it(hi.Id.ToString(), hi.Type, 0); if (dtw.Rows.Count == 0) { myadapter_wp.InsertWP(hi.Id.ToString(), hi.Type, DateTime.Now, 0, 0); } else { myadapter_wp.UpdateMP(0, DateTime.Now, hi.Type, hi.Id.ToString(), 0); } //异常,给ll推送异常,修改检测平台状态为异常 } if (hi.State.Equals("正常")) { try { Debug.Print("2"); if (CommonFunction.flag_listener) { Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); IPAddress ip = IPAddress.Parse(hi.IP); int port = Convert.ToInt32(hi.Port); socket.Connect(ip, port); string s = DownCommond.GenerateCorekeep(); socket.Send(DataHelper.Str2Byte(s)); socket.Close(); } } catch (Exception) { Debug.Print("3"); LogHelper.Info("检测平台异常"); } hi.Ke_al++; } Thread.Sleep(500); } catch (Exception) { hi.Ke_al++; //此处应警报,没有办法发送心跳包 } } } Debug.Print("1"); Thread.Sleep(10000); } }