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


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

Определение

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

public:
 override IAsyncResult ^ BeginRead(cli::array <System::Byte> ^ buffer, int offset, int size, AsyncCallback ^ callback, System::Object ^ state);
public:
 override IAsyncResult ^ BeginRead(cli::array <System::Byte> ^ buffer, int offset, int count, AsyncCallback ^ callback, System::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 count, 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, size As Integer, callback As AsyncCallback, state As Object) As IAsyncResult
Public Overrides Function BeginRead (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, который выполняется после выполнения метода BeginRead(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 для BeginRead , чтобы получать уведомления о завершении операции. Обратите внимание, что если базовый сетевой стек выполняет операцию синхронно, обратный вызов будет выполняться во время вызова BeginRead. В этом случае свойству CompletedSynchronously возвращаемого IAsyncResult объекта будет присвоено значение true , чтобы указать, что метод завершился синхронно. AsyncState Используйте свойство объекта , IAsyncResult чтобы получить объект состояния, переданный методу BeginRead .

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

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

Примечание

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

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

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

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