NetworkStream.BeginRead(Byte[], Int32, Int32, AsyncCallback, Object) Methode
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
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.
De NetworkStream is gesloten.
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.