private void EnsureCapacity(int newCapacity) { if (newCapacity > _memoryManager.MaximumStreamCapacity && _memoryManager.MaximumStreamCapacity > 0) { RecyclableMemoryStreamManager.EventsWriter.MemoryStreamOverCapacity(newCapacity, _memoryManager .MaximumStreamCapacity, _tag, AllocationStack); throw new InvalidOperationException("Requested capacity is too large: " + newCapacity + ". Limit is " + _memoryManager.MaximumStreamCapacity); } if (_largeBuffer != null) { if (newCapacity > _largeBuffer.Length) { var newBuffer = _memoryManager.GetLargeBuffer(newCapacity, _tag); InternalRead(newBuffer, 0, _length, 0); ReleaseLargeBuffer(); _largeBuffer = newBuffer; } } else { while (Capacity < newCapacity) { _blocks.Add(_memoryManager.GetBlock()); } } }