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


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

Определение

Начинает операцию асинхронного чтения. (Вместо него рекомендуется использовать метод ReadAsync(Byte[], Int32, Int32).)

public:
 override IAsyncResult ^ BeginRead(cli::array <System::Byte> ^ array, int offset, int count, AsyncCallback ^ asyncCallback, System::Object ^ asyncState);
public:
 override IAsyncResult ^ BeginRead(cli::array <System::Byte> ^ buffer, int offset, int count, AsyncCallback ^ asyncCallback, System::Object ^ asyncState);
public override IAsyncResult BeginRead (byte[] array, int offset, int count, AsyncCallback? asyncCallback, object? asyncState);
public override IAsyncResult BeginRead (byte[] buffer, int offset, int count, AsyncCallback? asyncCallback, object? asyncState);
public override IAsyncResult BeginRead (byte[] array, int offset, int count, AsyncCallback asyncCallback, object asyncState);
override this.BeginRead : byte[] * int * int * AsyncCallback * obj -> IAsyncResult
override this.BeginRead : byte[] * int * int * AsyncCallback * obj -> IAsyncResult
Public Overrides Function BeginRead (array As Byte(), offset As Integer, count As Integer, asyncCallback As AsyncCallback, asyncState As Object) As IAsyncResult
Public Overrides Function BeginRead (buffer As Byte(), offset As Integer, count As Integer, asyncCallback As AsyncCallback, asyncState As Object) As IAsyncResult

Параметры

arraybuffer
Byte[]

Массив байтов, в который следует считывать данные.

offset
Int32

Смещение в байтах, с которого начинается чтение данных из потока.

count
Int32

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

asyncCallback
AsyncCallback

Дополнительный асинхронный ответный вызов по завершении операции чтения.

asyncState
Object

Предоставляемый пользователем объект, являющийся отличительным признаком данного конкретного запроса на асинхронное чтение от других запросов.

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

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

Исключения

Метод пытался в асинхронном режиме выполнить чтение за пределами потока, или произошла ошибка диска.

Один или несколько аргументов являются недопустимыми.

Методы были вызваны после закрытия потока.

Текущая реализация класса GZipStream не поддерживает операцию чтения.

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

Комментарии

Важно!

Начиная с .NET 6 этот метод может считывать не столько байтов, сколько было запрошено. Дополнительные сведения см. в разделе Частичные и нулевые операции чтения в DeflateStream, GZipStream и CryptoStream.

Начиная с платформа .NET Framework 4.5 асинхронные операции чтения можно выполнять с помощью Stream.ReadAsync метода . Метод BeginRead по-прежнему доступен в текущих версиях для поддержки устаревшего кода, однако вы можете проще реализовать асинхронные операции ввода-вывода с помощью новых асинхронных методов. Дополнительные сведения см. в разделе Асинхронный файловый ввод-вывод.

Передайте возвращаемое IAsyncResult значение методу EndRead потока, чтобы определить, сколько байтов было прочитано, и освободить ресурсы операционной системы, используемые для чтения. Это можно сделать с помощью того же кода, который вызвал BeginRead , или в обратном вызове, переданном в BeginRead.

Текущая позиция в потоке обновляется при выполнении асинхронного чтения или записи, а не после завершения операции ввода-вывода.

Несколько одновременных асинхронных запросов делают порядок завершения запроса неопределенным.

Используйте свойство , CanRead чтобы определить, поддерживает ли текущий GZipStream объект чтение.

Если поток закрыт или вы передаете недопустимый аргумент, исключения создаются немедленно из BeginRead. Ошибки, возникающие во время асинхронного запроса на чтение, такие как сбой диска во время запроса ввода-вывода, происходят в потоке пула потоков и вызывают исключения при вызове EndRead.

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