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 資料流內位置往前移,並監視取消要求。

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

傳回

表示非同步讀取作業並會將位元組總數包裝到緩衝區的工作。 如果目前無法取得足夠的位元組,則結果值可能小於緩衝區所配置的位元組數,如果已經到達 Deflate 資料流末端,則可能為 0 (零)。

例外狀況

取消標記已取消。 此例外狀況會儲存在傳回的工作中。

備註

重要

從 .NET 6 開始,這個方法可能不會讀取所要求的位元元組數目。 如需詳細資訊,請參閱 DeflateStream、GZipStream 和 CryptoStream 中的部分和零位元組讀取

方法 ReadAsync 可讓您執行耗用大量資源的 I/O 作業,而不會封鎖主線程。 此效能考慮在傳統型應用程式中特別重要,其中耗時的串流作業可能會封鎖UI線程,並讓應用程式顯示為無法運作。 異步方法會與 Visual Basic 和 C# 中的 和 await 關鍵詞搭配async使用。

CanRead使用屬性來判斷目前的實例是否支援讀取。

如果作業在完成之前取消,則傳回的工作會 TaskStatus.Canceled 包含 屬性的值 Task.Status

適用於

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

來源:
DeflateStream.cs
來源:
DeflateStream.cs
來源:
DeflateStream.cs

以非同步方式從目前的 Deflate 資料流讀取位元組序列、將其寫入至位元組陣列、依讀取的位元組數將 Deflate 資料流內位置往前移,並監視取消要求。

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

要開始從 Deflate 數據流寫入數據的位元組位移。

count
Int32

要讀取的最大位元組數。

cancellationToken
CancellationToken

用來監視是否有取消要求的語彙基元。 預設值是 None

傳回

表示非同步讀取作業並會將位元組總數包裝到緩衝區的工作。 如果目前可供使用的位元組數目少於所要求數目,結果值可能會小於所要求的位元組數目,或如果已經到達 Deflate 資料流末端,則可能為 0 (零)。

例外狀況

取消標記已取消。 此例外狀況會儲存在傳回的工作中。

備註

重要

從 .NET 6 開始,這個方法可能不會讀取所要求的位元元組數目。 如需詳細資訊,請參閱 DeflateStream、GZipStream 和 CryptoStream 中的部分和零位元組讀取

方法 ReadAsync 可讓您執行耗用大量資源的 I/O 作業,而不會封鎖主線程。 此效能考慮在傳統型應用程式中特別重要,其中耗時的串流作業可能會封鎖UI線程,並讓應用程式顯示為無法運作。 異步方法會與 Visual Basic 和 C# 中的 和 await 關鍵詞搭配async使用。

CanRead使用屬性來判斷目前的實例是否支援讀取。

如果作業在完成之前取消,則傳回的工作會 TaskStatus.Canceled 包含 屬性的值 Task.Status

這個方法會儲存在工作中,它會傳回方法同步對應專案可以擲回的所有非使用例外狀況。 如果例外狀況儲存在傳回的工作中,則會在等候工作時擲回該例外狀況。 使用例外狀況,例如 ArgumentException仍會同步擲回。 如需預存例外狀況,請參閱 擲回的 Read(Byte[], Int32, Int32)例外狀況。

適用於