BufferedStream.ReadAsync 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
多載
| 名稱 | Description |
|---|---|
| ReadAsync(Memory<Byte>, CancellationToken) |
非同步讀取目前緩衝串流中的位元組序列,並依讀取位元組數推進緩衝串流中的位置。 |
| ReadAsync(Byte[], Int32, Int32, CancellationToken) |
非同步讀取目前串流的位元組序列,依讀取位元組數前進串流中的位置,並監控取消請求。 |
ReadAsync(Memory<Byte>, CancellationToken)
非同步讀取目前緩衝串流中的位元組序列,並依讀取位元組數推進緩衝串流中的位置。
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。
傳回
一個代表非同步讀取操作的任務。 其 Result 屬性的值包含讀取到緩衝區的總位元組數。 若緩衝區目前沒有分配的位元組數,結果值可能小於該位元組數;若已到達串流末端,則可為零。
例外狀況
取消令牌也被取消了。 此例外會儲存在回傳的任務中。
備註
此 ReadAsync 方法能讓你執行資源密集型的 I/O 操作,而不阻塞主執行緒。 在 Windows 8.x 市集應用程式或傳統型應用程式中,此效能考慮特別重要,其中耗時的串流作業可能會封鎖 UI 線程,並讓應用程式看起來好像無法運作。 非同步方法與 async 和 await 關鍵字搭配使用 Visual Basic 和 C# 中。
利用該 CanRead 屬性判斷目前實例是否支援讀取。
若操作在完成前被取消,回傳的任務會包含 TaskStatus.Canceled 該 Status 屬性的值。
適用於
ReadAsync(Byte[], Int32, Int32, 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[] buffer, int offset, int count, System.Threading.CancellationToken cancellationToken);
override this.ReadAsync : byte[] * int * int * System.Threading.CancellationToken -> System.Threading.Tasks.Task<int>
Public Overrides Function ReadAsync (buffer As Byte(), offset As Integer, count As Integer, cancellationToken As CancellationToken) As Task(Of Integer)
參數
- buffer
- Byte[]
用來寫入資料的緩衝區。
- offset
- Int32
從串流開始寫入資料的位元組偏移 buffer 量。
- count
- Int32
最大可讀取的位元組數。
- cancellationToken
- CancellationToken
用來監控取消申請的代幣。
傳回
一個代表非同步讀取操作的任務。 回傳的任務包含緩衝區中讀取的總位元組數。 若目前可用位元組數少於請求的位元組數,結果值可小於請求的位元組數;若已到達串流結束,則可為 0(0)。
例外狀況
buffer 為 null。
offset 或 count 是陰性。
與count的和offset大於緩衝區長度。
串流不支援閱讀。
溪流已被處理。
該串流目前已被先前的讀取操作使用。
取消令牌也被取消了。 此例外會儲存在回傳的任務中。
備註
你可以建立一個取消標記,方法是建立該類別的實例CancellationTokenSource,並將該屬性作為cancellationToken參數傳遞Token。
此方法在任務中儲存所有非使用例外,該方法的同步對應程式可拋出這些例外。 如果回傳的任務中儲存了例外,該例外會在等待任務時拋出。 使用例外錯誤,例如 ArgumentException,仍會同步拋出。 關於儲存的例外,請參見由 Read(Byte[], Int32, Int32)拋出的例外。