private void CheckTimeOut() { while (!isStop) { lock (obj) { bool needRefresh = false; foreach (DataMessage message in newmsg) { string unit = ChangeAppConfig.getValueFromKey("TimeUnit"); if (unit.Equals("H") || unit.Equals("时")) { if (DateTime.Compare(message.timeConvert().AddHours(InitData.GetTimeOut()), DateTime.Now) < 0) { message.status = STATUS.OVERTIME; message.isOverTime = true; _server.updateMessTimeOut(message); needRefresh = true; } } else if (unit.Equals("M") || unit.Equals("分")) { if (DateTime.Compare(message.timeConvert().AddMinutes(InitData.GetTimeOut()), DateTime.Now) < 0) { message.status = STATUS.OVERTIME; message.isOverTime = true; _server.updateMessTimeOut(message); needRefresh = true; } } else { if (DateTime.Compare(message.timeConvert().AddSeconds(InitData.GetTimeOut()), DateTime.Now) < 0) { message.status = STATUS.OVERTIME; message.isOverTime = true; _server.updateMessTimeOut(message); needRefresh = true; } } } if (needRefresh) { newmsg = messages.Where(m => m.status == STATUS.WAITING).ToList(); if (this.components == null || IsDisposed || !IsHandleCreated) { isStop = true; return; } this.Invoke((EventHandler)(delegate { refresh(0); })); } } Thread.Sleep(10000); } }