IOExtensionsReadExactAsync - метод

Выполняет асинхронное чтение указанного количества байт из потока в буфер. В результате выполнения метода либо буфер должен быть заполнен, либо поток завершился раньше, чем данные были прочитаны. Возвращает количество действительно прочитанных байт, которое может быть меньше указанного количества только в том случае, если поток завершился.

Definition

Пространство имён: Tessa.Platform.IO
Сборка: Tessa (в Tessa.dll) Версия: 4.0.4
C#
public static ValueTask<int> ReadExactAsync(
	this Stream stream,
	Memory<byte> buffer,
	CancellationToken cancellationToken = default
)

Параметры

stream  Stream
Поток, из которого выполняется чтение данных.
buffer  MemoryByte
Буфер, в который записываются прочитанные данные.
cancellationToken  CancellationToken  (Optional)
Объект, посредством которого можно отменить асинхронную задачу.

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

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

Примечание об использовании

В Visual Basic и C# этот метод можно вызывать как метод экземпляра для любого объекта типа Stream. При вызове метода для экземпляра следует опускать первый параметр. Дополнительные сведения см. в разделе Методы расширения (Visual Basic) или Методы расширения (Руководство по программированию в C#).

Заметки

В отличие от метода ReadAsync(MemoryByte, CancellationToken), этот метод всегда корректно обрабатывает ситуацию, в которой в поток ещё не пришли все данные из внешнего источника (например, при передаче по сети).

См. также