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