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


BufferedStream.ReadAsync Метод

Определение

Перегрузки

ReadAsync(Memory<Byte>, CancellationToken)

Асинхронно считывает последовательность байтов из текущего буферизованного потока и перемещает позицию внутри буферизованного потока на число считанных байтов.

ReadAsync(Byte[], Int32, Int32, CancellationToken)

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

ReadAsync(Memory<Byte>, CancellationToken)

Исходный код:
BufferedStream.cs
Исходный код:
BufferedStream.cs
Исходный код:
BufferedStream.cs

Асинхронно считывает последовательность байтов из текущего буферизованного потока и перемещает позицию внутри буферизованного потока на число считанных байтов.

public override System.Threading.Tasks.ValueTask<int> ReadAsync (Memory<byte> buffer, System.Threading.CancellationToken cancellationToken = default);
override this.ReadAsync : Memory<byte> * System.Threading.CancellationToken -> System.Threading.Tasks.ValueTask<int>
Public Overrides Function ReadAsync (buffer As Memory(Of Byte), Optional cancellationToken As CancellationToken = Nothing) As ValueTask(Of Integer)

Параметры

buffer
Memory<Byte>

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

cancellationToken
CancellationToken

Токен для отслеживания запросов отмены. Значение по умолчанию — None.

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

Задача, представляющая асинхронную операцию чтения. Значение свойства Result содержит общее число байтов, считанных в буфер. Итоговое значение может быть меньше количества выделенных в буфере байтов, если столько байтов в настоящее время недоступно, или оно может равняться нулю (0), если был достигнут конец потока.

Исключения

Маркер отмены был отменен. Это исключение сохраняется в возвращаемой задаче.

Комментарии

Метод ReadAsync позволяет выполнять ресурсоемкие операции ввода-вывода, не блокируя поток main. Это соображение, связанное с производительностью, особенно важно в приложениях Магазина Windows 8.x и классических приложениях, в которых длительная потоковая операция может блокировать поток пользовательского интерфейса и создавать впечатление, что приложение не работает. Асинхронные методы используются в сочетании с ключевыми словами async и await в Visual Basic и C#.

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

Если операция отменена до ее завершения, возвращаемая задача содержит TaskStatus.Canceled значение Status свойства .

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

ReadAsync(Byte[], Int32, Int32, CancellationToken)

Исходный код:
BufferedStream.cs
Исходный код:
BufferedStream.cs
Исходный код:
BufferedStream.cs

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

public:
 override System::Threading::Tasks::Task<int> ^ ReadAsync(cli::array <System::Byte> ^ buffer, int offset, int count, System::Threading::CancellationToken cancellationToken);
public override System.Threading.Tasks.Task<int> ReadAsync (byte[] buffer, int offset, int count, System.Threading.CancellationToken cancellationToken);
override this.ReadAsync : byte[] * int * int * System.Threading.CancellationToken -> System.Threading.Tasks.Task<int>
Public Overrides Function ReadAsync (buffer As Byte(), offset As Integer, count As Integer, cancellationToken As CancellationToken) As Task(Of Integer)

Параметры

buffer
Byte[]

Буфер, в который записываются данные.

offset
Int32

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

count
Int32

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

cancellationToken
CancellationToken

Токен для отслеживания запросов отмены.

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

Задача, представляющая асинхронную операцию чтения. Значение параметра TResult содержит общее число байтов, считанных в буфер. Значение результата может быть меньше запрошенного числа байтов, если число доступных в данный момент байтов меньше запрошенного числа, или результат может быть равен 0 (нулю), если был достигнут конец потока.

Исключения

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

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

Сумма offset и count больше, чем длина буфера.

Поток не поддерживает чтение.

Поток был удален.

Поток в настоящее время используется предыдущей операцией чтения.

Маркер отмены был отменен. Это исключение сохраняется в возвращаемой задаче.

Комментарии

Вы можете создать маркер отмены, создав экземпляр CancellationTokenSource класса и передав свойство в TokencancellationToken качестве параметра .

Этот метод сохраняет в задаче все исключения, не относящиеся к использованию, которые может создавать синхронный аналог метода. Если исключение сохраняется в возвращаемой задаче, это исключение будет создано при ожидании задачи. Исключения использования, такие как ArgumentException, по-прежнему создаются синхронно. Хранимые исключения см. в разделе исключения, создаваемые Read(Byte[], Int32, Int32).

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