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); }