public void RecycleMembers() { List <TMember> wouldBeRemovedMembers = new List <TMember>(); foreach (var item in _mapping) { if (!item.Value.IsRunning && item.Value.Length <= 0) { wouldBeRemovedMembers.Add(item.Key); } } lock (_syncRoot) { foreach (var member in wouldBeRemovedMembers) { SmartQueue <TItem> queue = _mapping[member]; if (!queue.IsRunning && queue.Length <= 0) { _mapping.Remove(member); queue.Dispose(); } } } }
public void Remove(TMember member) { lock (_syncRoot) { if (_mapping.ContainsKey(member)) { SmartQueue <TItem> queue = _mapping[member]; _mapping.Remove(member); queue.Dispose(); } } }
public void Enqueue(TMember member, TItem item) { lock (_syncRoot) { if (!_mapping.ContainsKey(member)) { string queueName = string.Format(CultureInfo.InvariantCulture, "{0}#{1}", Name, member.ToString()); var queue = new SmartQueue <TItem>(queueName, _action, true) { IsActionAsyncMode = false }; _mapping.Add(member, queue); // default queue reclaimed if (IsHoldup) { queue.Pause(); } } _mapping[member].Enqueue(item); } }
/// <summary> /// 计划任务管理器 /// </summary> private ScheduleTaskManager() { _queue = new SmartQueue <IScheduleTask>("ScheduleTaskManager", PreSchedule, true, 25); }