GZipStream.ReadAsync 方法

定义

重载

ReadAsync(Memory<Byte>, CancellationToken)

从当前 GZip 流将字节的序列异步读取到一个字节内存区域中,按读取的字节数向前移动 GZip 流中的位置,并监视取消请求。

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

从当前 GZip 流将字节的序列异步读取到一个字节数组中,按读取的字节数向前移动 GZip 流中的位置,并监视取消请求。

ReadAsync(Memory<Byte>, CancellationToken)

Source:
GZipStream.cs
Source:
GZipStream.cs
Source:
GZipStream.cs

从当前 GZip 流将字节的序列异步读取到一个字节内存区域中,按读取的字节数向前移动 GZip 流中的位置,并监视取消请求。

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

返回

一个表示异步读取操作并将读取的总字节数包装到缓冲区中的任务。 如果很多字节当前不可用,则结果值可小于在缓冲区中分配的字节数;如果已到达 GZip 流结尾,则结果值可以为 0(零)。

例外

取消令牌已取消。 此异常存储在返回的任务中。

注解

重要

从 .NET 6 开始,此方法可能不会读取请求的字节数。 有关详细信息,请参阅 DeflateStream、GZipStream 和 CryptoStream 中的部分读取和零字节读取

使用 ReadAsync 方法可以执行资源密集型 I/O 操作,而不会阻止main线程。 此性能注意事项在桌面应用中尤其重要,因为耗时的流操作可能会阻止 UI 线程并使应用看起来好像不工作。 异步方法与 async Visual Basic 和 C# 中的 和 await 关键字结合使用。

CanRead使用 属性确定当前实例是否支持读取。

如果在操作完成之前取消了操作,则返回的任务将包含 TaskStatus.Canceled 属性的值 Task.Status

适用于

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

Source:
GZipStream.cs
Source:
GZipStream.cs
Source:
GZipStream.cs

从当前 GZip 流将字节的序列异步读取到一个字节数组中,按读取的字节数向前移动 GZip 流中的位置,并监视取消请求。

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

参数

arraybuffer
Byte[]

要写入数据的缓冲区。

offset
Int32

从 GZip 流开始写入数据的字节偏移量。

count
Int32

最多读取的字节数。

cancellationToken
CancellationToken

要监视取消请求的标记。 默认值为 None

返回

表示异步读取操作的任务,该操作包装读取的总字节数。 如果当前可用字节数少于所请求的字节数,则该结果值可小于所请求的字节数;如果已到达 GZip 流结尾时,则为 0(零)。

例外

取消令牌已取消。 此异常存储在返回的任务中。

注解

重要

从 .NET 6 开始,此方法可能不会读取请求的字节数。 有关详细信息,请参阅 DeflateStream、GZipStream 和 CryptoStream 中的部分读取和零字节读取

使用 ReadAsync 方法可以执行资源密集型 I/O 操作,而不会阻止main线程。 此性能注意事项在桌面应用中尤其重要,因为耗时的流操作可能会阻止 UI 线程并使应用看起来好像不工作。 异步方法与 async Visual Basic 和 C# 中的 和 await 关键字结合使用。

CanRead使用 属性确定当前实例是否支持读取。

如果在操作完成之前取消了操作,则返回的任务将包含 TaskStatus.Canceled 属性的值 Task.Status

此方法将存储在任务中,它返回该方法的同步对应项可能引发的所有非使用异常。 如果异常存储在返回的任务中,则在等待任务时将引发该异常。 使用异常(如 ArgumentException)仍会同步引发。 有关存储的异常,请参阅 引发的 Read(Byte[], Int32, Int32)异常。

适用于