Stream.EndRead(IAsyncResult) 方法

定义

等待挂起的异步读取完成。 (请考虑改用 ReadAsync(Byte[], Int32, Int32)。)

C#
public virtual int EndRead (IAsyncResult asyncResult);

参数

asyncResult
IAsyncResult

对要完成的挂起异步请求的引用。

返回

从流中读取的字节数,介于零 (0) 和请求的字节数之间。 仅当请求了 0 个字节或由于位于流的末尾而没有更多字节可用时,ReadAsync 才返回零 (0) ;否则,在至少有一个字节可用之前,读取操作不会完成。 如果请求了零个字节,则读取操作可能会立即完成,也可能在至少有一个字节可用 (但不会) 使用任何数据。

例外

asyncResultnull

处于挂起状态的读取操作的句柄不可用。

- 或 -

挂起操作不支持读取。

流已关闭或出现了内部错误。

注解

在 .NET Framework 4 和更早的版本中,您必须使用 BeginReadEndRead 之类的方法来实现异步 I/O 操作。 这些方法在 .NET Framework 4.5 中仍然可用,以支持旧代码;但是,新的异步方法(如 ReadAsyncWriteAsyncCopyToAsyncFlushAsync)可帮助你更轻松地实现异步 I/O 操作。

调用 EndRead 以确定从流中读取的字节数。

EndRead可以从 中对每个IAsyncResultBeginRead调用一次。

此方法将一直阻塞,直到 I/O 操作已完成。

适用于

产品 版本
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1

另请参阅