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