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(); } } } }
/// <summary> /// Releases unmanaged and - optionally - managed resources /// </summary> /// <param name="disposing"><c>true</c> to release both managed and unmanaged resources; <c>false</c> to release only unmanaged resources.</param> private void Dispose(bool disposing) { if (disposing) { if (_queue != null) { _queue.Dispose(); } } }
public void Remove(TMember member) { lock (_syncRoot) { if (_mapping.ContainsKey(member)) { SmartQueue <TItem> queue = _mapping[member]; _mapping.Remove(member); queue.Dispose(); } } }