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

定义

开始向流异步写入。

C#
public override IAsyncResult BeginWrite (byte[] buffer, int offset, int size, AsyncCallback? callback, object? state);
C#
public override IAsyncResult BeginWrite (byte[] buffer, int offset, int count, AsyncCallback? callback, object? state);
C#
public override IAsyncResult BeginWrite (byte[] buffer, int offset, int size, AsyncCallback callback, object state);

参数

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 实例上同时执行读取和写入操作,而无需同步。 只要写入操作有一个唯一线程,读取操作有一个唯一线程,读取和写入线程之间就不会有交叉干扰,也不需要同步。

适用于

产品 版本
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1

另请参阅