Stream.BeginWrite(Byte[], Int32, Int32, AsyncCallback, Object) 方法

定义

开始异步写操作。 (请考虑改用 WriteAsync(Byte[], Int32, Int32)。)

public:
 virtual IAsyncResult ^ BeginWrite(cli::array <System::Byte> ^ buffer, int offset, int count, AsyncCallback ^ callback, System::Object ^ state);
public virtual IAsyncResult BeginWrite (byte[] buffer, int offset, int count, AsyncCallback? callback, object? state);
public virtual IAsyncResult BeginWrite (byte[] buffer, int offset, int count, AsyncCallback callback, object state);
public virtual IAsyncResult BeginWrite (byte[] buffer, int offset, int count, AsyncCallback callback, object? state);
abstract member BeginWrite : byte[] * int * int * AsyncCallback * obj -> IAsyncResult
override this.BeginWrite : byte[] * int * int * AsyncCallback * obj -> IAsyncResult
Public Overridable Function BeginWrite (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

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

返回

IAsyncResult

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

例外

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

一个或多个自变量无效。

在流关闭后调用方法。

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

注解

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

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

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

如果流是可写的,则流末尾的写入会扩展流。

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

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

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

适用于

另请参阅