public void Dispose() { foreach (var data in _leftJoiners) { data.Dispose(); } _rightJoiner?.Dispose(); _leftJoiners.Clear(); _rightJoiner = null; }
public void SetRight(int rightSourceIndex) { HasRight = true; _rightJoiner = CreateJoinerData(false); _rightJoiner.SourceIndex = rightSourceIndex; JoinerAdded?.Invoke(_rightJoiner); if (_leftJoiners.Count == 0) { _rightJoiner.Set(_right); } }
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); } } }
public void ClearRight() { HasRight = false; var data = _rightJoiner; _rightJoiner = null; try { data.Clear(); } finally { JoinerRemoved.Invoke(data); data.Dispose(); if (_leftJoiners.Count == 0 && !HasRight) { SetEmptied?.Invoke(this); } } }