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


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

Определение

Начинает асинхронное чтение из .NetworkStream

public:
 override IAsyncResult ^ BeginRead(cli::array <System::Byte> ^ buffer, int offset, int count, AsyncCallback ^ callback, System::Object ^ state);
public:
 override IAsyncResult ^ BeginRead(cli::array <System::Byte> ^ buffer, int offset, int size, AsyncCallback ^ callback, System::Object ^ state);
public override IAsyncResult BeginRead(byte[] buffer, int offset, int count, AsyncCallback? callback, object? state);
public override IAsyncResult BeginRead(byte[] buffer, int offset, int size, AsyncCallback? callback, object? state);
public override IAsyncResult BeginRead(byte[] buffer, int offset, int size, AsyncCallback callback, object state);
override this.BeginRead : byte[] * int * int * AsyncCallback * obj -> IAsyncResult
override this.BeginRead : byte[] * int * int * AsyncCallback * obj -> IAsyncResult
Public Overrides Function BeginRead (buffer As Byte(), offset As Integer, count As Integer, callback As AsyncCallback, state As Object) As IAsyncResult
Public Overrides Function BeginRead (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 , который выполняется после BeginRead(Byte[], Int32, Int32, AsyncCallback, Object) завершения.

state
Object

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

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

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

Исключения

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

Параметр offset меньше 0.

–или–

Параметр offset больше длины buffer параматера.

–или–

Меньше size 0.

–или–

Длина size параметра превышает длину buffer минус значения offset параметра.

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

–или–

Произошел сбой при чтении из сети.

–или–

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

Комментарии

Это важно

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

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

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

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

Замечание

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

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

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

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