Stream.BeginRead(Byte[], Int32, Int32, AsyncCallback, Object) Metódus

Definíció

Aszinkron olvasási műveletet kezd. (Fontolja meg a használatot ReadAsync(Byte[], Int32, Int32) .)

public:
 virtual IAsyncResult ^ BeginRead(cli::array <System::Byte> ^ buffer, int offset, int count, AsyncCallback ^ callback, System::Object ^ state);
public virtual IAsyncResult BeginRead(byte[] buffer, int offset, int count, AsyncCallback? callback, object? state);
public virtual IAsyncResult BeginRead(byte[] buffer, int offset, int count, AsyncCallback callback, object state);
public virtual IAsyncResult BeginRead(byte[] buffer, int offset, int count, AsyncCallback callback, object? state);
abstract member BeginRead : byte[] * int * int * AsyncCallback * obj -> IAsyncResult
override this.BeginRead : byte[] * int * int * AsyncCallback * obj -> IAsyncResult
Public Overridable Function BeginRead (buffer As Byte(), offset As Integer, count As Integer, callback As AsyncCallback, state As Object) As IAsyncResult

Paraméterek

buffer
Byte[]

A puffer, amelybe beolvassa az adatokat.

offset
Int32

A bájteltolódás buffer , amelynél az adatok írása elkezdhető a streamből.

count
Int32

Az elolvasandó bájtok maximális száma.

callback
AsyncCallback

Opcionális aszinkron visszahívás, amelyet az olvasás befejezésekor kell meghívni.

state
Object

Felhasználó által megadott objektum, amely megkülönbözteti ezt az aszinkron olvasási kérést más kérésektől.

Válaszok

Ez IAsyncResult az aszinkron olvasást jelöli, amely továbbra is függőben lehet.

Kivételek

A stream végén aszinkron olvasást kísérelt meg, vagy lemezhiba történik.

Egy vagy több argumentum érvénytelen.

A metódusok a stream bezárása után lettek meghívva.

A jelenlegi Stream implementáció nem támogatja az olvasási műveletet.

Megjegyzések

A .NET Framework 4- és korábbi verzióiban olyan módszereket kell használnia, mint a BeginRead és EndRead az aszinkron I/O-műveletek implementálásához. Ezek a metódusok továbbra is elérhetők a .NET Framework 4.5-ben az örökölt kód támogatásához, azonban az új aszinkron metódusok, például a ReadAsync, WriteAsync, CopyToAsync és FlushAsync megkönnyítik az aszinkron I/O-műveletek implementálását.

A streamek alapértelmezett implementációja BeginRead szinkron módon hívja meg a Read metódust, ami azt jelenti, hogy Read bizonyos streameken blokkolhat. Az olyan osztályok példányai azonban, mint például FileStream az NetworkStream aszinkron műveletek teljes körű támogatása, ha a példányok aszinkron módon lettek megnyitva. Ezért a BeginRead meghívások nem blokkolják ezeket a streameket. Felülbírálhatja BeginRead (például aszinkron meghatalmazottak használatával), hogy aszinkron viselkedést biztosítson.

Adja át a IAsyncResult visszatérési értéket a EndRead stream metódusának, hogy megállapítsa, hány bájtot olvasott be, és engedje fel az olvasáshoz használt operációsrendszer-erőforrásokat. EndReadminden híváshoz egyszer kell meghívni.BeginRead Ezt megteheti ugyanazzal a kóddal, amely a hívott BeginRead vagy a visszahívást továbbította BeginRead.

A stream aktuális pozíciója az aszinkron olvasás vagy írás kiadásakor frissül, nem pedig az I/O-művelet befejeződésekor.

Több egyidejű aszinkron kérés bizonytalanná teszi a kérés teljesítésének sorrendjét.

CanRead A tulajdonság használatával állapítsa meg, hogy az aktuális példány támogatja-e az olvasást.

Ha egy stream le van zárva, vagy érvénytelen argumentumot ad át, a kivételek azonnal ki lesznek dobva a rendszerből BeginRead. Az aszinkron olvasási kérés során fellépő hibák(például az I/O-kérés során fellépő lemezhiba) a szálkészlet szálán fordulnak elő, és kivételeket jeleznek híváskor EndRead.

A következőre érvényes:

Lásd még