Stream.BeginRead(Byte[], Int32, Int32, AsyncCallback, Object) Metódus
Definíció
Fontos
Egyes információk olyan, kiadás előtti termékekre vonatkoznak, amelyek a kiadásig még jelentősen módosulhatnak. A Microsoft nem vállal kifejezett vagy törvényi garanciát az itt megjelenő információért.
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.