private void OnStart(object state)
 {
     while (true)
     {
         try
         {
             LockInfo result = null;
             if (mLockInfoQueue.TryDequeue(out result))
             {
                 if (result.Type == ProcessType.Detection)
                 {
                     OnDetection();
                 }
                 else
                 {
                     LockerQueue lockerQueue = GetQueue(result.Key);
                     lockerQueue.Push(result);
                 }
             }
             else
             {
                 System.Threading.Thread.Sleep(10);
             }
         }
         catch (Exception e_)
         {
             Node.Loger.Process(LogType.DEBUG, "DMonitoCenter start error {0}", e_.Message);
         }
     }
 }
        private LockerQueue GetQueue(string key)
        {
            LockerQueue result = null;

            if (!mLockers.TryGetValue(key, out result))
            {
                result        = new LockerQueue(TimeOut, Node);
                result.Key    = key;
                mLockers[key] = result;
            }
            return(result);
        }
 private void OnBeEmpty(LockerQueue queue)
 {
     mLockers.Remove(queue.Key);
 }