NetworkStream.BeginWrite(Byte[], Int32, Int32, AsyncCallback, Object) 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
开始向流异步写入。
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 的字节数。
- callback
- AsyncCallback
在 AsyncCallback 完成后执行的 BeginWrite(Byte[], Int32, Int32, AsyncCallback, Object) 委托。
- state
- Object
一个包含用户定义的任何附加数据的对象。
返回
一个表示异步调用的 IAsyncResult。
例外
buffer
参数为 null
。
offset
参数小于 0。
- 或 -
offset
参数大于 buffer
的长度。
- 或 -
size
参数小于 0。
- 或 -
size
参数大于 buffer
的长度减去 offset
参数的值。
注解
重要
这是一个兼容性 API,我们不建议使用 APM (Begin/End) 方法进行新的开发。 请改用基于任务的等效项。
可以将实现 的AsyncCallbackBeginWrite回调传递给 ,以获取有关操作完成的通知。 请注意,如果基础网络堆栈同步完成操作,将在调用 BeginWrite期间内联执行回调。 在这种情况下, CompletedSynchronously 返回 IAsyncResult 的 上的 属性将设置为 true
以指示方法同步完成。
AsyncState使用 的 IAsyncResult 属性获取传递给 BeginWrite 方法的状态对象。
BeginWrite必须通过调用 EndWrite 方法完成操作。 通常,方法由提供的 AsyncCallback 委托调用。 EndWrite 将阻止调用线程,直到操作完成。
注意
如果收到 ,IOException检查 属性InnerException来确定它是否由 SocketException引起。 如果是这样,请使用 ErrorCode 属性获取特定的错误代码。
可以在类的 NetworkStream 实例上同时执行读取和写入操作,而无需同步。 只要写入操作有一个唯一线程,读取操作有一个唯一线程,读取和写入线程之间就不会有交叉干扰,也不需要同步。