System.Net.Sockets.NetworkStream.ReadAsync C# (CSharp) Method

ReadAsync() public method

public ReadAsync ( byte buffer, int offset, int size, CancellationToken cancellationToken ) : Task
buffer byte
offset int
size int
cancellationToken System.Threading.CancellationToken
return Task
        public override Task<int> ReadAsync(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).BeginRead(bufferArg, offsetArg, sizeArg, callback, state),
                iar => ((NetworkStream)iar.AsyncState).EndRead(iar),
                buffer,
                offset,
                size,
                this);
#else
            // Use optimized Stream.ReadAsync that's more efficient than
            // Task.Factory.FromAsync when NetworkStream overrides Begin/EndRead.
            return base.ReadAsync(buffer, offset, size, cancellationToken);
#endif
        }

Usage Example

示例#1
16
        private async Task<String> ReadRequest(NetworkStream stream)
        {
            var encoding = Encoding.UTF8;
            var i = 0;
            var bytes = new byte[1024];
            var sb = new StringBuilder();

            while ((i = await stream.ReadAsync(bytes, 0, bytes.Length)) != 0)
            {
                sb.Append(encoding.GetString(bytes, 0, i));

                if (!stream.DataAvailable) break;
            }

            return sb.ToString();
        }
All Usage Examples Of System.Net.Sockets.NetworkStream::ReadAsync