DeflateStream.ReadAsync 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
多載
ReadAsync(Memory<Byte>, CancellationToken) |
以非同步方式從目前的 Deflate 資料流讀取位元組序列、將其寫入至位元組記憶體範圍、依讀取的位元組數將 Deflate 資料流內位置往前移,並監視取消要求。 |
ReadAsync(Byte[], Int32, Int32, CancellationToken) |
以非同步方式從目前的 Deflate 資料流讀取位元組序列、將其寫入至位元組陣列、依讀取的位元組數將 Deflate 資料流內位置往前移,並監視取消要求。 |
ReadAsync(Memory<Byte>, CancellationToken)
以非同步方式從目前的 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)
參數
- 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)
以非同步方式從目前的 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)例外狀況。