BufferedStream.BeginRead(Byte[], Int32, Int32, AsyncCallback, Object) 方法

定義

開始非同步的讀取作業。 (請考慮用 ReadAsync(Byte[], Int32, Int32, CancellationToken) 替代。)

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);
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

使用者所提供的物件,其可以從其他要求中區分出這個特定非同步讀取的要求。

傳回

物件,表示可能還在暫止中的非同步讀取。

例外狀況

buffernull

offsetcount 為負。

嘗試在超過資料流結尾處進行非同步讀取。

緩衝區長度減去 offset 會小於 count

目前的資料流不支援讀取作業。

備註

在 .NET Framework 4 和舊版中,您必須使用 和 之類的BeginReadEndRead方法來實作異步檔案作業。 這些方法仍可在 .NET Framework 4.5 中使用以支援舊版程式代碼;不過,新的異步方法,例如 ReadAsyncWriteAsyncFlushAsync,可協助您更輕鬆地實作異步檔案作業。

EndWrite 每次呼叫 都必須只呼叫 BeginRead一次。 無法在開始另一個讀取之前結束讀取程式,可能會導致不想要的行為,例如死結。

注意

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

EndRead 必須使用這個 IAsyncResult 呼叫,才能找出已讀取的位元組數目。

適用於