public override void Write(byte[] buffer, int offset, int size, bool immediate, TimeSpan timeout, BufferManager bufferManager) { if (size <= 0) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentOutOfRangeException("size", size, SR.ValueMustBePositive)); } ThrowPendingWriteException(); if (immediate || flushTimeout == 0) { WriteNow(buffer, offset, size, timeout, bufferManager); } else { WriteLater(buffer, offset, size, timeout); bufferManager.ReturnBuffer(buffer); } }