本文档已存档,并且将不进行维护。

Stream.BeginWrite 方法

开始异步写操作。

命名空间:System.IO
程序集:mscorlib(在 mscorlib.dll 中)

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

参数

buffer

从中写入数据的缓冲区。

offset

buffer 中的字节偏移量,从此处开始写入。

count

最多写入的字节数。

callback

可选的异步回调,在完成写入时调用。

state

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

返回值

表示异步写入的 IAsyncResult(可能仍处于挂起状态)。

异常类型条件

IOException

尝试进行的异步写入超过了流的结尾,或者发生了磁盘错误。

ArgumentException

一个或多个参数无效。

ObjectDisposedException

在流关闭后调用方法。

NotSupportedException

当前 Stream 实现不支持写入操作。

有关创建文件和向文件中写入文本的示例,请参见 如何:向文件写入文本。有关从文件中读取文本的示例,请参见 如何:从文件读取文本。有关读取和写入二进制文件的示例,请参见 如何:对新建的数据文件进行读取和写入。有关异步文件 I/O 的示例,请参见 异步文件 I/O

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

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

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

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

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

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

Windows 98、Windows 2000 SP4、Windows CE、Windows Millennium Edition、Windows Mobile for Pocket PC、Windows Mobile for Smartphone、Windows Server 2003、Windows XP Media Center Edition、Windows XP Professional x64 Edition、Windows XP SP2、Windows XP Starter Edition

.NET Framework 并不是对每个平台的所有版本都提供支持。有关受支持版本的列表,请参见系统要求

.NET Framework

受以下版本支持:2.0、1.1、1.0

.NET Compact Framework

受以下版本支持:2.0、1.0
显示: