导出 (0) 打印
全部展开
信息
您所需的主题如下所示。但此主题未包含在此库中。

Stream.BeginRead 方法

2013/12/13

开始异步读操作。

Namespace:  System.IO
程序集:  mscorlib(位于 mscorlib.dll 中)

public virtual IAsyncResult BeginRead(
	byte[] buffer,
	int offset,
	int count,
	AsyncCallback callback,
	Object state
)

参数

buffer
类型: System.Byte []
数据读入的缓冲区。
offset
类型: System.Int32
buffer 中的字节偏移量,从该偏移量开始写入从流中读取的数据。
count
类型: System.Int32
读取的最大字节数。
callback
类型: System.AsyncCallback
可选的异步回调,在完成读取时调用。
state
类型: System.Object
一个用户提供的对象,它将该特定的异步读取请求与其他请求区别开来。

返回值

类型: System.IAsyncResult
表示异步读的 IAsyncResult,仍可挂起。

异常条件
IOException

试图异步读取经过流末尾,或发生一个磁盘错误。

ArgumentException

一个或多个参数无效。

ObjectDisposedException

在流关闭后调用方法。

NotSupportedException

当前 Stream 实现不支持读取操作。

在流上的 BeginRead 默认实现将同步调用 Read 方法,这意味着 Read 在某些流上可能发生阻塞。但是,如果已经异步打开某些类(如 FileStream)的实例,则这些实例将完全支持异步操作。因此,对 BeginRead 的调用不会在那些流上阻塞。可以重写 BeginRead(例如,使用异步委托)以提供异步行为。

IAsyncResult 返回值传递给流的 EndRead 方法,以确定已读取的字节数并释放用于进行读取的操作系统资源。每次调用 BeginRead 时,都必须调用一次 EndRead。通过使用调用 BeginRead 的相同代码或在传递给 BeginRead 的回调中,可以执行此操作。

当发出异步读取或写入时而不是在完成 I/O 操作时,流中的当前位置被更新。

多个同时进行的异步请求会使请求完成顺序不确定。

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

如果流已关闭或者传递了无效的参数,将立即从 BeginRead 中引发异常。异步读取请求期间出现的错误(如 I/O 请求期间的磁盘故障)发生在线程池线程上,并在调用 EndRead 时引发异常。

Windows Phone OS

受以下版本支持: 8.0, 7.1, 7.0

Windows Phone

显示:
© 2014 Microsoft