NetworkStream.BeginRead(Byte[], Int32, Int32, AsyncCallback, Object) Methode

Definitie

Begint een asynchrone leesbewerking uit de NetworkStream.

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

Parameters

buffer
Byte[]

Een matrix van het type Byte dat de locatie in het geheugen is voor het opslaan van gegevens die zijn gelezen uit de NetworkStream.

offset
Int32

De locatie om buffer de gegevens op te slaan.

size
Int32

Het aantal bytes dat moet worden gelezen uit de NetworkStream.

callback
AsyncCallback

De AsyncCallback gemachtigde die wordt uitgevoerd wanneer BeginRead(Byte[], Int32, Int32, AsyncCallback, Object) deze is voltooid.

state
Object

Een object dat aanvullende door de gebruiker gedefinieerde gegevens bevat.

Retouren

Een IAsyncResult die de asynchrone aanroep vertegenwoordigt.

Uitzonderingen

De buffer parameter is null.

De offset parameter is kleiner dan 0.

– of –

De offset parameter is groter dan de lengte van de buffer paramater.

– of –

De size is minder dan 0.

– of –

De size waarde is groter dan de lengte van buffer min de waarde van de offset parameter.

De onderliggende Socket waarde is gesloten.

– of –

Er is een fout opgetreden tijdens het lezen van het netwerk.

– of –

Er is een fout opgetreden bij het openen van de socket.

Opmerkingen

Important

Dit is een compatibiliteits-API. Het is niet raadzaam om de APM-methoden (Begin/End) te gebruiken voor nieuwe ontwikkeling. Gebruik in plaats daarvan de op taken gebaseerde equivalenten.

U kunt een callback doorgeven waarnaar wordt geïmplementeerd AsyncCallbackBeginRead om een melding te ontvangen over de voltooiing van de bewerking. Houd er rekening mee dat als de onderliggende netwerkstack de bewerking synchroon voltooit, de callback inline wordt uitgevoerd, tijdens de aanroep naar BeginRead. In dit geval wordt de CompletedSynchronously eigenschap op de geretourneerde IAsyncResult waarde ingesteld om aan te true geven dat de methode synchroon is voltooid. Gebruik de AsyncState eigenschap van de IAsyncResult functie om het statusobject te verkrijgen dat is doorgegeven aan de BeginRead methode.

De BeginRead bewerking moet worden voltooid door de EndRead methode aan te roepen. Normaal gesproken wordt de methode aangeroepen door de opgegeven AsyncCallback gemachtigde. EndRead blokkeert de aanroepende thread totdat de bewerking is voltooid.

De bewerking leest zoveel gegevens als beschikbaar is, tot het aantal bytes dat is opgegeven door de count parameter.

Note

Als u een IOException, controleert u de InnerException eigenschap om te bepalen of deze is veroorzaakt door een SocketException. Als dit het probleem is, gebruikt u de ErrorCode eigenschap om de specifieke foutcode op te halen.

Lees- en schrijfbewerkingen kunnen tegelijkertijd worden uitgevoerd op een exemplaar van de NetworkStream klasse zonder dat er synchronisatie nodig is. Zolang er één unieke thread is voor de schrijfbewerkingen en één unieke thread voor de leesbewerkingen, is er geen kruisinterferentie tussen lees- en schrijfthreads en is er geen synchronisatie vereist.

Van toepassing op

Zie ook