Exemple #1
0
 public void run(object sender, ElapsedEventArgs e)
 {
     Thread.CurrentThread.IsBackground = false;
     lock (mylock)
     {
         while (isRunning)
         {
             Thread.Sleep(5);
             Dictionary <String, TerminalSession> users = TerminalRealTimeInspector.CreateInstance().currentUser;
             if (users != null && users.Count() > 0)
             {
                 lock (users)
                 {
                     long currTime = Convert.ToInt64(DateTime.Now.Subtract(new DateTime(1970, 1, 1)).TotalMilliseconds);
                     foreach (string x in users.Keys)
                     {
                         //定时器任务,每100ms遍历执行一次
                         TerminalSession session = users[x];
                         long            current = Convert.ToInt64(DateTime.Now.Subtract(new DateTime(1970, 1, 1)).TotalMilliseconds);
                         //超时
                         if ((current - session.getLastTime()) >= sessionTimeOutMills)
                         {
                             TerminalRealTimeInspector.CreateInstance().closeSession(x);
                         }
                         //间隔100ms
                         Thread.Sleep(100);
                     }
                 }
             }
             Thread.Sleep(1000);
         }
     }
 }
 //线程安全的同步锁
 public static TerminalRealTimeInspector CreateInstance()
 {
     if (_instance == null)
     {
         lock (locks)
         {
             if (_instance == null)
             {
                 _instance = new TerminalRealTimeInspector();
             }
         }
     }
     return(_instance);
 }