System.IO.FileStream.FlushWriteAsync C# (CSharp) Method

FlushWriteAsync() private method

private FlushWriteAsync ( CancellationToken cancellationToken ) : Task
cancellationToken CancellationToken
return Task
        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;
        }