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


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.

callback
AsyncCallback

Делегат AsyncCallback, который выполняется после выполнения метода BeginWrite(Byte[], Int32, Int32, AsyncCallback, Object).

state
Object

Объект, содержащий любые дополнительные данные, определенные пользователем.

Возвращаемое значение

Объект IAsyncResult, который представляет асинхронный вызов.

Исключения

Параметр buffer имеет значение null.

Значение параметра offset меньше 0.

-или-

Значение параметра offset больше длины значения, указанного в параметре buffer.

-или-

Значение параметра size меньше 0.

-или-

Значение параметра size больше разности значений длины в параметре buffer и значения параметра offset.

Основной объект Socket закрыт.

-или-

Произошел сбой в процессе записи в сеть.

-или-

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

Объект NetworkStream закрыт.

Комментарии

Важно!

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

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

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

Примечание

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

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

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

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