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

Definition

Påbörjar en asynkron läsåtgärd. (Överväg att använda ReadAsync(Byte[], Int32, Int32, CancellationToken) i stället.)

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

Parametrar

buffer
Byte[]

Bufferten som data ska läsas in i.

offset
Int32

Byteförskjutningen buffer där du börjar skriva data som lästs från dataströmmen.

count
Int32

Det maximala antalet byte som ska läsas.

callback
AsyncCallback

Ett valfritt asynkront återanrop som ska anropas när läsningen är klar.

state
Object

Ett objekt som tillhandahålls av användaren och som skiljer den här specifika asynkrona läsbegäran från andra begäranden.

Returer

Ett objekt som representerar den asynkrona läsningen, som fortfarande kan vara väntande.

Undantag

buffer är null.

offset eller count är negativ.

Försökte läsa asynkront förbi strömmens slut.

Buffertlängden minus offset är mindre än count.

Den aktuella strömmen stöder inte läsåtgärden.

Kommentarer

I .NET Framework 4 och tidigare versioner måste du använda metoder som BeginRead och EndRead för att implementera asynkrona filåtgärder. Dessa metoder är fortfarande tillgängliga i .NET Framework 4.5 för att stödja äldre kod. De nya asynkrona metoderna, till exempel ReadAsync, WriteAsync och FlushAsync, hjälper dig att implementera asynkrona filåtgärder enklare.

EndWrite måste anropas exakt en gång för varje anrop till BeginRead. Om du inte avslutar en läsprocess innan du påbörjar en annan läsning kan det orsaka oönskade beteenden, till exempel dödläge.

Note

Använd egenskapen CanRead för att avgöra om den aktuella instansen stöder läsning.

EndRead måste anropas med detta IAsyncResult för att ta reda på hur många byte som lästes.

Gäller för