private static async Task CopyToAsyncCore(Stream destination, AwaitableSocketAsyncEventArgs ea, CancellationToken cancellationToken) { try { while (true) { cancellationToken.ThrowIfCancellationRequested(); int bytesRead = await ea.ReceiveAsync(); if (bytesRead == 0) { break; } await destination.WriteAsync(ea.Buffer, 0, bytesRead, cancellationToken).ConfigureAwait(false); } } finally { ArrayPool <byte> .Shared.Return(ea.Buffer, clearArray : true); ea.Dispose(); } }
private static async Task CopyToAsyncCore(Stream destination, AwaitableSocketAsyncEventArgs ea, CancellationToken cancellationToken) { try { while (true) { cancellationToken.ThrowIfCancellationRequested(); int bytesRead = await ea.ReceiveAsync(); if (bytesRead == 0) { break; } await destination.WriteAsync(ea.Buffer, 0, bytesRead, cancellationToken).ConfigureAwait(false); } } finally { ArrayPool<byte>.Shared.Return(ea.Buffer, clearArray: true); ea.Dispose(); } }