PipeStream.ReadAsync 方法

定义

重载

ReadAsync(Memory<Byte>, CancellationToken)

从当前流异步读取字节的序列,将其写入字节内存范围,按读取的字节数向前移动流中的位置,并监视取消请求。Asynchronously reads a sequence of bytes from the current stream, writes them to a byte memory range, advances the position within the stream by the number of bytes read, and monitors cancellation requests.

ReadAsync(Byte[], Int32, Int32, CancellationToken)

从指定字节数的指定位置开始,将当前流中的字节序列异步读取到字节数组,按读取的字节数向前移动流中的位置,并监视取消请求。Asynchronously reads a sequence of bytes from the current stream to a byte array starting at a specified position for a specified number of bytes, advances the position within the stream by the number of bytes read, and monitors cancellation requests.

ReadAsync(Memory<Byte>, CancellationToken)

从当前流异步读取字节的序列,将其写入字节内存范围,按读取的字节数向前移动流中的位置,并监视取消请求。Asynchronously reads a sequence of bytes from the current stream, writes them to a byte memory range, advances the position within the stream by the number of bytes read, and monitors cancellation requests.

public override System.Threading.Tasks.ValueTask<int> ReadAsync (Memory<byte> buffer, System.Threading.CancellationToken cancellationToken = null);
override this.ReadAsync : Memory<byte> * System.Threading.CancellationToken -> System.Threading.Tasks.ValueTask<int>

参数

buffer
Memory<Byte>

要将数据写入的内存区域。The region of memory to write the data into.

cancellationToken
CancellationToken

要监视的取消请求标记。The token to monitor for cancellation requests. 默认值为 NoneThe default value is None.

返回

表示异步读取操作的任务。A task that represents the asynchronous read operation. Result 属性的值包含读入缓冲区的总字节数。The value of its Result property contains the total number of bytes read into the buffer. 如果很多字节当前不可用,则结果值可小于在缓冲区中分配的字节数;如果已到达流结尾,则结果值可以为 0(零)。The result value can be less than the number of bytes allocated in the buffer if that many bytes are not currently available, or it can be 0 (zero) if the end of the stream has been reached.

异常

流不支持读取。The stream does not support reading.

无法访问关闭的管道。Cannot access a closed pipe.

管道尚未连接。The pipe hasn't been connected yet.

- 或 --or-

管道处于断开连接状态。The pipe is in a disconnected state.

- 或 --or-

尚未设置管道句柄。The pipe handle has not been set. (你的 PipeStream 实现是否调用 InitializeHandle(SafePipeHandle, Boolean, Boolean)(Did your PipeStream implementation call InitializeHandle(SafePipeHandle, Boolean, Boolean)?

注解

利用 ReadAsync 方法,你可以在不阻塞主线程的情况下执行占用大量资源的 i/o 操作。The ReadAsync method enables you to perform resource-intensive I/O operations without blocking the main thread. Windows 8.x 应用商店Windows 8.x Store 应用或 桌面desktop 应用中一个耗时的流操作可能阻塞 UI 线程并让您的应用看起来好像不工作时,这种性能的考虑就显得尤为重要了。This performance consideration is particularly important in a Windows 8.x 应用商店Windows 8.x Store app or 桌面desktop app where a time-consuming stream operation can block the UI thread and make your app appear as if it is not working. 异步方法与 Visual Basic 和C#中的 asyncawait 关键字结合使用。The async methods are used in conjunction with the async and await keywords in Visual Basic and C#.

使用 CanRead 属性可确定当前实例是否支持读取。Use the CanRead property to determine whether the current instance supports reading.

如果在操作完成前取消该操作,则返回的任务将包含 Status 属性的 TaskStatus.Canceled 值。If the operation is canceled before it completes, the returned task contains the TaskStatus.Canceled value for the Status property.

ReadAsync(Byte[], Int32, Int32, CancellationToken)

从指定字节数的指定位置开始,将当前流中的字节序列异步读取到字节数组,按读取的字节数向前移动流中的位置,并监视取消请求。Asynchronously reads a sequence of bytes from the current stream to a byte array starting at a specified position for a specified number of bytes, advances the position within the stream by the number of bytes read, and monitors cancellation requests.

public:
 override System::Threading::Tasks::Task<int> ^ ReadAsync(cli::array <System::Byte> ^ buffer, int offset, int count, System::Threading::CancellationToken cancellationToken);
public override System.Threading.Tasks.Task<int> ReadAsync (byte[] buffer, int offset, int count, System.Threading.CancellationToken cancellationToken);
override this.ReadAsync : byte[] * int * int * System.Threading.CancellationToken -> System.Threading.Tasks.Task<int>

参数

buffer
Byte[]

数据写入的缓冲区。The buffer to write the data into.

offset
Int32

buffer 中的字节偏移量,从该偏移量开始写入从流中读取的数据。The byte offset in buffer at which to begin writing data from the stream.

count
Int32

要读取的最大字节数。The maximum number of bytes to read.

cancellationToken
CancellationToken

要监视的取消请求标记。The token to monitor for cancellation requests. 默认值为 NoneThe default value is None.

返回

表示异步读取操作的任务。A task that represents the asynchronous read operation. Result 属性的值包含读入缓冲区的总字节数。The value of its Result property contains the total number of bytes read into the buffer. 如果当前可用字节数少于所请求的字节数,则该结果值可小于所请求的字节数;如果已到达流结尾时,则为 0(零)。The result value can be less than the number of bytes requested if the number of bytes currently available is less than the requested number, or it can be 0 (zero) if the end of the stream has been reached.

异常

流不支持读取。The stream does not support reading.

无法访问关闭的管道。Cannot access a closed pipe.

管道尚未连接。The pipe hasn't been connected yet.

- 或 --or-

管道处于断开连接状态。The pipe is in a disconnected state.

- 或 --or-

尚未设置管道句柄。The pipe handle has not been set. (你的 PipeStream 实现是否调用 InitializeHandle(SafePipeHandle, Boolean, Boolean)(Did your PipeStream implementation call InitializeHandle(SafePipeHandle, Boolean, Boolean)?

注解

利用 ReadAsync 方法,你可以在不阻塞主线程的情况下执行占用大量资源的 i/o 操作。The ReadAsync method enables you to perform resource-intensive I/O operations without blocking the main thread. Windows 8.x 应用商店Windows 8.x Store 应用或 桌面desktop 应用中一个耗时的流操作可能阻塞 UI 线程并让您的应用看起来好像不工作时,这种性能的考虑就显得尤为重要了。This performance consideration is particularly important in a Windows 8.x 应用商店Windows 8.x Store app or 桌面desktop app where a time-consuming stream operation can block the UI thread and make your app appear as if it is not working. 异步方法与 Visual Basic 和C#中的 asyncawait 关键字结合使用。The async methods are used in conjunction with the async and await keywords in Visual Basic and C#.

使用 CanRead 属性可确定当前实例是否支持读取。Use the CanRead property to determine whether the current instance supports reading.

如果在操作完成前取消该操作,则返回的任务将包含 Status 属性的 TaskStatus.Canceled 值。If the operation is canceled before it completes, the returned task contains the TaskStatus.Canceled value for the Status property.

适用于