Поделиться через


NetworkStream.BeginWrite(Byte[], Int32, Int32, AsyncCallback, Object) Метод

Определение

Начинает асинхронную запись в поток.

public:
 override IAsyncResult ^ BeginWrite(cli::array <System::Byte> ^ buffer, int offset, int count, AsyncCallback ^ callback, System::Object ^ state);
public:
 override IAsyncResult ^ BeginWrite(cli::array <System::Byte> ^ buffer, int offset, int size, AsyncCallback ^ callback, System::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);
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, count As Integer, callback As AsyncCallback, state As Object) As IAsyncResult
Public Overrides Function BeginWrite (buffer As Byte(), offset As Integer, size As Integer, callback As AsyncCallback, state As Object) As IAsyncResult

Параметры

buffer
Byte[]

Массив типаByte, содержащий данные для записи в .NetworkStream

offset
Int32

buffer Расположение для начала отправки данных.

countsize
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 параметра.

Базовый Socket объект закрыт.

–или–

Во время записи в сеть произошел сбой.

–или–

При доступе к сокету произошла ошибка.

Комментарии

Это важно

Это API совместимости. Мы не рекомендуем использовать методы APM (Begin/End) для новой разработки. Вместо этого используйте эквиваленты на основе задач.

Вы можете передать обратный вызов, который реализуется AsyncCallbackBeginWrite для получения уведомлений о завершении операции. Обратите внимание, что если базовый сетевой стек завершает операцию синхронно, обратный вызов будет выполняться во время вызова BeginWrite. В этом случае CompletedSynchronously для возвращаемого IAsyncResult свойства будет задано true значение, указывающее, что метод завершился синхронно. AsyncState Используйте свойство IAsyncResult объекта состояния, переданного методуBeginWrite.

Операция BeginWrite должна быть завершена EndWrite путем вызова метода. Как правило, метод вызывается предоставленным AsyncCallback делегатом. EndWrite блокирует вызывающий поток до завершения операции.

Замечание

Если вы получаете IOExceptionсвойство, проверьте InnerException , было ли оно вызвано SocketException. В этом случае используйте ErrorCode свойство для получения определенного кода ошибки.

Операции чтения и записи можно выполнять одновременно на экземпляре NetworkStream класса без необходимости синхронизации. Если для операций записи существует один уникальный поток и один уникальный поток для операций чтения, между потоками чтения и записи не требуется перекрестная интерференция между потоками чтения и записи, а синхронизация не требуется.

Применяется к

См. также раздел