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

定义

开始向流异步写入。

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

参数

buffer
Byte[]

一个 Byte 类型的数组,该数组包含要写入 NetworkStream 的数据。

offset
Int32

buffer 中开始发送数据的位置。

sizecount
Int32

要写入 NetworkStream 的字节数。

state
Object

一个包含用户定义的任何附加数据的对象。

返回

一个表示异步调用的 IAsyncResult

例外

buffer 参数为 null

offset 参数小于 0。

- 或 -

offset 参数大于 buffer 的长度。

- 或 -

size 参数小于 0。

- 或 -

size 参数大于 buffer 的长度减去 offset 参数的值。

已关闭基础 Socket

- 或 -

写入到网络时出错。

- 或 -

访问套接字时出错。

注解

重要

这是一个兼容性 API,我们不建议使用 APM (Begin/End) 方法进行新的开发。 请改用基于任务的等效项。

可以将实现 的AsyncCallbackBeginWrite回调传递给 ,以获取有关操作完成的通知。 请注意,如果基础网络堆栈同步完成操作,将在调用 BeginWrite期间内联执行回调。 在这种情况下, CompletedSynchronously 返回 IAsyncResult 的 上的 属性将设置为 true 以指示方法同步完成。 AsyncState使用 的 IAsyncResult 属性获取传递给 BeginWrite 方法的状态对象。

BeginWrite必须通过调用 EndWrite 方法完成操作。 通常,方法由提供的 AsyncCallback 委托调用。 EndWrite 将阻止调用线程,直到操作完成。

注意

如果收到 ,IOException检查 属性InnerException来确定它是否由 SocketException引起。 如果是这样,请使用 ErrorCode 属性获取特定的错误代码。

可以在类的 NetworkStream 实例上同时执行读取和写入操作,而无需同步。 只要写入操作有一个唯一线程,读取操作有一个唯一线程,读取和写入线程之间就不会有交叉干扰,也不需要同步。

适用于

另请参阅