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


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

Определение

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

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);
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

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

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

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

Исключения

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

offset или count является отрицательным значением.

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

Длина буфера минус offset меньше count.

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

Комментарии

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

EndWrite для каждого вызова BeginReadдолжен вызываться ровно один раз. Сбой завершения процесса чтения перед началом другого чтения может привести к нежелательному поведению, такому как взаимоблокировка.

Примечание

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

EndRead Необходимо вызвать с помощью этого IAsyncResult метода, чтобы узнать, сколько байтов было прочитано.

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