public override Task WriteAsync(byte[] buffer, int offset, int size, CancellationToken cancellationToken)
{
#if netcore50
if (cancellationToken.IsCancellationRequested)
{
return Task.FromCanceled<int>(cancellationToken);
}
return Task.Factory.FromAsync(
(bufferArg, offsetArg, sizeArg, callback, state) => ((NetworkStream)state).BeginWrite(bufferArg, offsetArg, sizeArg, callback, state),
iar => ((NetworkStream)iar.AsyncState).EndWrite(iar),
buffer,
offset,
size,
this);
#else
// Use optimized Stream.WriteAsync that's more efficient than
// Task.Factory.FromAsync when NetworkStream overrides Begin/EndWrite.
return base.WriteAsync(buffer, offset, size, cancellationToken);
#endif
}