110,555
社区成员
发帖
与我相关
我的任务
分享
private void HeartCheck_Tick(object sender, EventArgs e)
{
TimeSpan span = new TimeSpan();
RemoveSocketName = new List<string>();
foreach (var item in HeartList)
{
span = DateTime.Now - item.LastConnectTime; //心跳包检测
// label4.Text = "111"; //放在此处,label4值有变化
if (span.TotalSeconds > OverTime) //超时时间
{
// label4.Text = "111"; //放在此处,label4值无变化,调试时也执行到这步了,但没改变
dicSocket.Where(u => u.Key == item.SocketName).FirstOrDefault().Value.Close();
dicSocket.Remove(item.SocketName);
for (int i = 0; i < dataGridView2.Rows.Count; i++)
{
if (dataGridView2.Rows[i].Cells[1].Value.ToString() != "" && item.SocketName.Contains(dataGridView2.Rows[i].Cells[1].Value.ToString()))
{
dataGridView2.Rows[i].Cells[3].Value = "离线";
break;
}
}
RemoveSocketName.Add(item.SocketName);
CommandList.Remove(item.SocketName);
}
}
foreach (var item in RemoveSocketName) //移除心跳包集合
{
HeartList.Remove(HeartList.Where(u => u.SocketName == item).FirstOrDefault());
}
}