private Task FlushWriteAsync(CancellationToken cancellationToken)
{
Debug.Assert(_useAsyncIO);
Debug.Assert(_readPos == 0 && _readLength == 0, "FileStream: Read buffer must be empty in FlushWriteAsync!");
// If the buffer is already flushed, don't spin up the OS write
if (_writePos == 0) return Task.CompletedTask;
Task flushTask = WriteInternalCoreAsync(GetBuffer(), 0, _writePos, cancellationToken);
_writePos = 0;
// Update the active buffer operation
_activeBufferOperation = HasActiveBufferOperation ?
Task.WhenAll(_activeBufferOperation, flushTask) :
flushTask;
return flushTask;
}