BufferedStream.BeginRead(Byte[], Int32, Int32, AsyncCallback, Object) 方法

定义

开始异步读操作。 (请考虑改用 ReadAsync(Byte[], Int32, Int32, CancellationToken)。)

public:
 override IAsyncResult ^ BeginRead(cli::array <System::Byte> ^ buffer, int offset, int count, AsyncCallback ^ callback, System::Object ^ state);
public override IAsyncResult BeginRead (byte[] buffer, int offset, int count, AsyncCallback? callback, object? state);
public override IAsyncResult BeginRead (byte[] buffer, int offset, int count, AsyncCallback callback, object state);
public override IAsyncResult BeginRead (byte[] buffer, int offset, int count, AsyncCallback callback, object? state);
override this.BeginRead : byte[] * int * int * AsyncCallback * obj -> IAsyncResult
Public Overrides Function BeginRead (buffer As Byte(), offset As Integer, count As Integer, callback As AsyncCallback, state As Object) As IAsyncResult

参数

buffer
Byte[]

数据读入的缓冲区。

offset
Int32

buffer 中的字节偏移量,从该偏移量开始写入从流中读取的数据。

count
Int32

最多读取的字节数。

callback
AsyncCallback

可选的异步回调,在完成读取时调用。

state
Object

一个用户提供的对象,它将该特定的异步读取请求与其他请求区别开来。

返回

表示异步读取(可能仍处于挂起状态)的对象。

例外

buffernull

offsetcount 为负数。

试图在流的末尾之外进行异步读取。

缓冲区长度减去 offset 小于 count

当前流不支持读取操作。

注解

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

EndWrite 每次调用 BeginRead都必须恰好调用一次。 在开始另一个读取之前未能结束读取进程可能会导致不良行为,例如死锁。

注意

CanRead使用 属性确定当前实例是否支持读取。

EndRead 必须使用 此 IAsyncResult 调用来找出读取的字节数。

适用于