Nyelv

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

Definíció

Aszinkron olvasást kezd a NetworkStream.

public:
 override IAsyncResult ^ BeginRead(cli::array <System::Byte> ^ buffer, int offset, int count, AsyncCallback ^ callback, System::Object ^ state);
public:
 override IAsyncResult ^ BeginRead(cli::array <System::Byte> ^ buffer, int offset, int size, 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 size, AsyncCallback? callback, object? state);
public override IAsyncResult BeginRead(byte[] buffer, int offset, int size, AsyncCallback callback, object state);
override this.BeginRead : byte[] * int * int * AsyncCallback * obj -> IAsyncResult
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
Public Overrides Function BeginRead (buffer As Byte(), offset As Integer, size As Integer, callback As AsyncCallback, state As Object) As IAsyncResult

Paraméterek

buffer
Byte[]

A memória olyan típusú Byte tömbje, amely a memóriában tárolja a beolvasott NetworkStreamadatokat.

offset
Int32

Az adatok tárolásának megkezdéséhez megadott hely buffer .

countsize
Int32

A beolvasandó bájtok száma a NetworkStream.

state
Object

Olyan objektum, amely további felhasználó által definiált adatokat tartalmaz.

Válaszok

Az IAsyncResult aszinkron hívást jelképező hívás.

Kivételek

A buffer paraméter a következő null: .

A offset paraméter kisebb, mint 0.

-vagy-

A offset paraméter nagyobb, mint a buffer paraméter hossza.

-vagy-

Ez size kisebb, mint 0.

-vagy-

Ez size nagyobb, mint a paraméter értékének bufferoffset mínusz hossza.

Az alapul szolgáló Socket zárt.

-vagy-

Hiba történt a hálózatról való olvasás közben.

-vagy-

Hiba történt a szoftvercsatorna elérésekor.

Megjegyzések

Important

Ez egy kompatibilitási API. Nem javasoljuk az APM (Begin/End) metódusok használatát az új fejlesztéshez. Ehelyett használja a feladatalapú megfelelőket.

A művelet befejezéséről értesítést kapó visszahívást továbbíthat, amely implementálva AsyncCallbackBeginRead van. Vegye figyelembe, hogy ha a mögöttes hálózati verem szinkron módon hajtja végre a műveletet, a visszahívást a rendszer beágyazottan hajtja végre a hívás BeginReadsorán. Ebben az esetben a CompletedSynchronously visszaadott IAsyncResulttrue tulajdonság azt jelzi, hogy a metódus szinkron módon fejeződött be. Használja a AsyncState tulajdonságot a IAsyncResult metódusnak átadott állapotobjektum lekéréséhez BeginRead .

A BeginRead műveletet a metódus meghívásával EndRead kell végrehajtani. A metódust általában a megadott AsyncCallback meghatalmazott hívja meg. EndRead a művelet befejezéséig blokkolja a hívó szálat.

A művelet annyi adatot olvas be, amennyit csak lehet, a paraméter által count megadott bájtszámig.

Note

Ha kap egy tulajdonságot IOException, ellenőrizze a InnerException tulajdonságot annak megállapításához, hogy a tulajdonságot egy SocketException. Ha igen, a ErrorCode tulajdonság használatával szerezze be az adott hibakódot.

Az olvasási és írási NetworkStream műveletek az osztály egy példányán is elvégezhetők szinkronizálás nélkül. Mindaddig, amíg az írási műveletekhez egy egyedi szál és egy egyedi szál tartozik az olvasási műveletekhez, az olvasási és írási szálak között nincs kereszt-interferencia, és nincs szükség szinkronizálásra.

A következőre érvényes:

Lásd még