Esempio n. 1
0
 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);
     }
 }