private void Dispose(bool disposing) { if (!_disposed) { if (_lock != null) { try { _lock.TryEnterWriteLock(LOCK_TIMEOUT); try { if (_leftBucket != null) { _leftBucket.Dispose(); _leftBucket = null; } if (_rightBucket != null) { _rightBucket.Dispose(); _rightBucket = null; } } finally { _lock.ExitWriteLock(); } } catch { } _lock.Dispose(); _lock = null; } _disposed = true; } }