public void Dispose() { foreach (var data in _leftJoiners) { data.Dispose(); } _rightJoiner?.Dispose(); _leftJoiners.Clear(); _rightJoiner = null; }
private void RemoveLeft(ActiveListJoinerData <TLeft, TRight, TResult, TKey> data) { try { data.Clear(); } finally { JoinerRemoved.Invoke(data); data.Dispose(); if (_leftJoiners.Count == 0) { _rightJoiner?.Set(_right); } if (_leftJoiners.Count == 0 && !HasRight) { SetEmptied?.Invoke(this); } } }