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 объект закрыт.
–или–
Произошел сбой при чтении из сети.
–или–
При доступе к сокету произошла ошибка.
NetworkStream закрыт.
Комментарии
Это важно
Это API совместимости. Мы не рекомендуем использовать методы APM (Begin/End) для новой разработки. Вместо этого используйте эквиваленты на основе задач.
Вы можете передать обратный вызов, который реализуется AsyncCallbackBeginRead для получения уведомлений о завершении операции. Обратите внимание, что если базовый сетевой стек завершает операцию синхронно, обратный вызов будет выполняться во время вызова BeginRead. В этом случае CompletedSynchronously для возвращаемого IAsyncResult свойства будет задано true значение, указывающее, что метод завершился синхронно.
AsyncState Используйте свойство IAsyncResult объекта состояния, переданного методуBeginRead.
Операция BeginRead должна быть завершена EndRead путем вызова метода. Как правило, метод вызывается предоставленным AsyncCallback делегатом. EndRead блокирует вызывающий поток до завершения операции.
Операция считывает столько данных, сколько доступно, до количества байтов, указанных параметром count .
Замечание
Если вы получаете IOExceptionсвойство, проверьте InnerException , было ли оно вызвано SocketException. В этом случае используйте ErrorCode свойство для получения определенного кода ошибки.
Операции чтения и записи можно выполнять одновременно на экземпляре NetworkStream класса без необходимости синхронизации. Если для операций записи существует один уникальный поток и один уникальный поток для операций чтения, между потоками чтения и записи не требуется перекрестная интерференция между потоками чтения и записи, а синхронизация не требуется.