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


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

Определение

Начинает асинхронную операцию чтения. (Рекомендуется использовать ReadAsync вместо этого.)

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 count, AsyncCallback? callback, object? state);
public override IAsyncResult BeginRead(byte[] buffer, int offset, int count, AsyncCallback callback, object state);
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

Параметры

buffer
Byte[]

Буфер для чтения данных в.

offset
Int32

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

count
Int32

Максимальное число байтов для чтения.

callback
AsyncCallback

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

state
Object

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

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

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

Исключения

Предпринята попытка асинхронного чтения в конце потока или произошла ошибка диска.

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

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

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

Комментарии

Это важно

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

В .NET Framework 4 и более ранних версиях необходимо использовать такие методы, как BeginRead и EndRead, для реализации асинхронных операций ввода-вывода. Эти методы по-прежнему доступны в текущих версиях для поддержки устаревшего кода; однако новые асинхронные методы, такие как ReadAsync, WriteAsyncCopyToAsyncиFlushAsync, помогают реализовать асинхронные операции ввода-вывода.

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

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

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

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

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

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