CryptoStream.BeginRead(Byte[], Int32, Int32, AsyncCallback, Object) 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
開始非同步的讀取作業。 (請考慮用 ReadAsync 替代。)
public:
override IAsyncResult ^ BeginRead(cli::array <System::Byte> ^ buffer, int offset, int count, AsyncCallback ^ callback, System::Object ^ state);
public override IAsyncResult BeginRead (byte[] buffer, int offset, int count, AsyncCallback? callback, object? state);
public override IAsyncResult BeginRead (byte[] buffer, int offset, int count, AsyncCallback callback, object state);
override this.BeginRead : byte[] * int * int * AsyncCallback * obj -> IAsyncResult
Public Overrides Function BeginRead (buffer As Byte(), offset As Integer, count As Integer, callback As AsyncCallback, state As Object) As IAsyncResult
參數
- buffer
- Byte[]
讀取資料的緩衝區。
- offset
- Int32
開始寫入自資料流讀取資料的 buffer
位元組位移。
- count
- Int32
要讀取的最大位元組數。
- callback
- AsyncCallback
選擇性的非同步回呼,在讀取完成時呼叫。
- state
- Object
使用者所提供的物件,其可以從其他要求中區分出這個特定非同步讀取的要求。
傳回
IAsyncResult,代表可能還在擱置中的非同步讀取。
例外狀況
嘗試超越資料流結尾的非同步讀取,或發生磁碟錯誤。
一或多個引數無效。
關閉資料流後呼叫了方法。
目前的 Stream
實作不支援讀取作業。
備註
重要
從 .NET 6 開始,此方法可能不會讀取所要求的位元元組數目。 如需詳細資訊,請參閱 DeflateStream、GZipStream 和 CryptoStream 中的部分和零位元組讀取。
在 .NET Framework 4 和舊版中,您必須使用 和 之類的BeginReadEndRead方法來實作異步 I/O 作業。 這些方法仍可在目前版本中使用,以支援舊版程序代碼;不過,新的異步方法,例如 ReadAsync、 WriteAsync、 CopyToAsync和 FlushAsync,可協助您更輕鬆地實作異步 I/O 作業。
將傳 IAsyncResult
回值傳遞至 EndRead 數據流的 方法,以判斷讀取的位元元組數目,以及釋放用於讀取的操作系統資源。
EndRead 每次呼叫 BeginRead都必須呼叫一次。 您可以使用呼叫 BeginRead
的相同程式代碼,或在傳遞至 BeginRead
的回呼中執行此動作。
發出異步讀取或寫入時,數據流中的目前位置會更新,而不是在 I/O 作業完成時更新。
多個同時異步要求會轉譯要求完成順序不確定。
CanRead使用屬性來判斷目前實例是否支援讀取。
如果數據流已關閉,或您傳遞無效的自變數,則會立即從 BeginRead
擲回例外狀況。 在異步讀取要求期間發生的錯誤,例如 I/O 要求期間的磁碟失敗,會在線程集區線程上發生,並在呼叫 EndRead
時擲回例外狀況。