예제 #1
0
 /// <summary>
 /// 添加列队成员
 /// </summary>
 /// <param name="key"></param>
 /// <param name="action"></param>
 public CityMessageQueueItem Add(string key, Action action)
 {
     //保证一条一条加
     lock (MessageQueueSyncLock)
     {
         CityMessageQueueItem mqItem = new CityMessageQueueItem(key, action);
         CityMessageQueueDictionary[key] = mqItem;
         return(mqItem);
     }
 }
예제 #2
0
 /// <summary>
 /// 移除列队成员
 /// </summary>
 /// <param name="key"></param>
 public void Remove(string key)
 {
     lock (MessageQueueSyncLock)
     {
         if (CityMessageQueueDictionary.ContainsKey(key))
         {
             CityMessageQueueItem temp = new CityMessageQueueItem(key, null);
             CityMessageQueueDictionary.TryRemove(key, out temp);
             //MessageQueueList.Remove(key);
         }
     }
 }
예제 #3
0
        /// <summary>
        /// 操作列队
        /// </summary>
        public static void OperateQueue()
        {
            lock (FlushCacheLock)
            {
                //保证队列执行顺序
                CityMessageQueue mq  = new CityMessageQueue();
                string           key = mq.GetCurrentKey(); //获取最新的Key
                while (!string.IsNullOrEmpty(key))
                {
                    CityMessageQueueItem mqItem = mq.GetItem(key); //获取任务项

                    mqItem.Action();                               //执行
                    mq.Remove(key);                                //清除
                    key = mq.GetCurrentKey();                      //获取最新的Key
                }
            }
        }