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

Stream.BeginWrite 方法

2013/12/13

开始异步写操作。

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

public virtual IAsyncResult BeginWrite(
	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 实现不支持写操作。

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

将由当前方法返回的 IAsyncResult 传递给 EndWrite,以确保写入操作完成并相应地释放资源。每次调用 BeginWrite 时,都必须调用一次 EndWrite。通过使用调用 BeginWrite 的相同代码或在传递给 BeginWrite 的回调中,可以执行此操作。如果在异步写入期间发生错误,则在使用此方法返回的 IAsyncResult 调用 EndWrite 之前,不会引发异常。

如果流是可写的,则在流的末尾写入将使该流扩展。

当发出异步读取或写入时而不是在 I/O 操作完成时,流中的当前位置被更新。多个同时进行的异步请求会使请求完成顺序不确定。

使用 CanWrite 属性可确定当前实例是否支持写入。

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

Windows Phone OS

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

Windows Phone

Microsoft 正在进行一项网上调查,以了解您对 MSDN 网站的意见。 如果您选择参加,我们将会在您离开 MSDN 网站时向您显示该网上调查。

是否要参加?
显示:
© 2014 Microsoft