Прочитать на английском

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


DeflateStream.ReadAsync Метод

Определение

Перегрузки

ReadAsync(Memory<Byte>, CancellationToken)

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

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

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

ReadAsync(Memory<Byte>, CancellationToken)

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

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

C#
public override System.Threading.Tasks.ValueTask<int> ReadAsync (Memory<byte> buffer, System.Threading.CancellationToken cancellationToken = default);

Параметры

buffer
Memory<Byte>

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

cancellationToken
CancellationToken

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

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

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

Исключения

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

Комментарии

Важно!

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

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

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

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

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

.NET 9 и другие версии
Продукт Версии
.NET Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Standard 2.1

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

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

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

C#
public override System.Threading.Tasks.Task<int> ReadAsync (byte[] array, int offset, int count, System.Threading.CancellationToken cancellationToken);
C#
public override System.Threading.Tasks.Task<int> ReadAsync (byte[] buffer, int offset, int count, System.Threading.CancellationToken cancellationToken);

Параметры

arraybuffer
Byte[]

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

offset
Int32

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

count
Int32

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

cancellationToken
CancellationToken

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

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

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

Исключения

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

Комментарии

Важно!

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

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

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

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

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

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

.NET 9 и другие версии
Продукт Версии
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Standard 1.3, 1.4, 1.6, 2.1