Stream.BeginRead(Byte[], Int32, Int32, AsyncCallback, Object) Метод
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Начинает операцию асинхронного чтения. (Рекомендуется использовать ReadAsync(Byte[], Int32, Int32).)
public:
virtual IAsyncResult ^ BeginRead(cli::array <System::Byte> ^ buffer, int offset, int count, AsyncCallback ^ callback, System::Object ^ state);
public virtual IAsyncResult BeginRead (byte[] buffer, int offset, int count, AsyncCallback? callback, object? state);
public virtual IAsyncResult BeginRead (byte[] buffer, int offset, int count, AsyncCallback callback, object state);
public virtual IAsyncResult BeginRead (byte[] buffer, int offset, int count, AsyncCallback callback, object? state);
abstract member BeginRead : byte[] * int * int * AsyncCallback * obj -> IAsyncResult
override this.BeginRead : byte[] * int * int * AsyncCallback * obj -> IAsyncResult
Public Overridable 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 Framework 4 и более ранних версий для реализации операций асинхронного ввода-вывода необходимо использовать такие методы, как BeginRead и EndRead . Эти методы по-прежнему доступны в платформа .NET Framework 4.5 для поддержки устаревшего кода. Однако новые асинхронные методы, такие как ReadAsync, WriteAsync, CopyToAsyncи FlushAsync, упрощают реализацию асинхронных операций ввода-вывода.
Реализация BeginRead
по умолчанию в потоке Read вызывает метод синхронно, что означает, что Read
некоторые потоки могут блокироваться. Однако экземпляры классов, такие как FileStream
и , NetworkStream
полностью поддерживают асинхронные операции, если экземпляры были открыты асинхронно. Поэтому вызовы не BeginRead
будут блокироваться в этих потоках. Вы можете переопределить BeginRead
(например, с помощью асинхронных делегатов), чтобы обеспечить асинхронное поведение.
Передайте возвращаемое IAsyncResult
значение методу EndRead потока, чтобы определить, сколько байтов было прочитано, и освободить ресурсы операционной системы, используемые для чтения.
EndRead должен вызываться один раз для каждого вызова BeginRead. Это можно сделать с помощью того же кода, который вызвал BeginRead
, или в обратном вызове, переданном в BeginRead
.
Текущая позиция в потоке обновляется при выполнении асинхронного чтения или записи, а не после завершения операции ввода-вывода.
Несколько одновременных асинхронных запросов делают порядок завершения запроса неопределенным.
Используйте свойство , CanRead чтобы определить, поддерживает ли текущий экземпляр чтение.
Если поток закрыт или вы передаете недопустимый аргумент, исключения немедленно создаются из BeginRead
. Ошибки, возникающие во время асинхронного запроса на чтение, такие как сбой диска во время запроса ввода-вывода, возникают в потоке пула потоков и вызывают исключения при вызове EndRead
.
Продукт | Версии |
---|---|
.NET | Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9 |
.NET Framework | 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1 |
.NET Standard | 2.0, 2.1 |
Отзыв о .NET
.NET — это проект с открытым исходным кодом. Выберите ссылку, чтобы оставить отзыв: