NetworkStream.BeginRead(Byte[], Int32, Int32, AsyncCallback, Object) Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Beginnt einen asynchronen Lesevorgang aus dem NetworkStream.
public:
override IAsyncResult ^ BeginRead(cli::array <System::Byte> ^ buffer, int offset, int size, AsyncCallback ^ callback, System::Object ^ state);
public:
override IAsyncResult ^ BeginRead(cli::array <System::Byte> ^ buffer, int offset, int count, AsyncCallback ^ callback, System::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 count, 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, size As Integer, callback As AsyncCallback, state As Object) As IAsyncResult
Public Overrides Function BeginRead (buffer As Byte(), offset As Integer, count As Integer, callback As AsyncCallback, state As Object) As IAsyncResult
Parameter
- buffer
- Byte[]
Ein Array vom Typ Byte, das dem Speicherort entspricht, an dem aus dem NetworkStream gelesene Daten gespeichert werden.
- offset
- Int32
Die Position in buffer
, an der mit dem Speichern der Daten begonnen werden soll.
- sizecount
- Int32
Die Anzahl der aus dem NetworkStream zu lesenden Bytes.
- callback
- AsyncCallback
Der AsyncCallback-Delegat, der nach Abschluss von BeginRead(Byte[], Int32, Int32, AsyncCallback, Object) ausgeführt wird.
- state
- Object
Ein Objekt, das zusätzliche, benutzerdefinierte Daten enthält.
Gibt zurück
Ein IAsyncResult, das den asynchronen Aufruf darstellt.
Ausnahmen
Der buffer
-Parameter ist null
.
Der offset
-Parameter ist kleiner als 0.
- oder -
Der offset
-Parameter ist größer als die Länge des buffer
-Parameters.
- oder -
Die size
ist kleiner als 0.
- oder -
Der size
-Parameter ist größer als die Länge von buffer
abzüglich des Werts des offset
-Parameters.
Der zugrunde liegende Socket wird geschlossen.
- oder -
Beim Lesen aus dem Netzwerk ist ein Fehler aufgetreten.
- oder -
Beim Zugreifen auf den Socket ist ein Fehler aufgetreten.
Der NetworkStream ist geschlossen.
Hinweise
Wichtig
Dies ist eine Kompatibilitäts-API. Es wird nicht empfohlen, die APM-Methoden (Begin/End) für die Neuentwicklung zu verwenden. Verwenden Sie stattdessen die aufgabenbasierten Entsprechungen.
Sie können einen Rückruf übergeben, der implementiert, BeginRead um über den Abschluss des Vorgangs AsyncCallback benachrichtigt zu werden. Beachten Sie, dass der Rückruf während des Aufrufs BeginReadvon inline ausgeführt wird, wenn der zugrunde liegende Netzwerkstapel den Vorgang synchron abschließt. In diesem Fall wird die CompletedSynchronously -Eigenschaft für den zurückgegebenen IAsyncResult auf true
festgelegt, um anzugeben, dass die Methode synchron abgeschlossen wurde. Verwenden Sie die AsyncState -Eigenschaft von IAsyncResult , um das an die -Methode übergebene Zustandsobjekt BeginRead abzurufen.
Der BeginRead Vorgang muss durch Aufrufen der EndRead -Methode abgeschlossen werden. In der Regel wird die -Methode vom bereitgestellten AsyncCallback Delegaten aufgerufen. EndRead blockiert den aufrufenden Thread, bis der Vorgang abgeschlossen ist.
Der Vorgang liest so viele Daten, wie verfügbar sind, bis zu der Anzahl von Byte, die size
vom Parameter angegeben wird.
Hinweis
Wenn Sie einen IOExceptionerhalten, überprüfen Sie die InnerException -Eigenschaft, um zu ermitteln, ob sie durch eine SocketExceptionverursacht wurde. Wenn ja, verwenden Sie die ErrorCode -Eigenschaft, um den spezifischen Fehlercode abzurufen.
Lese- und Schreibvorgänge können gleichzeitig auf einem instance der NetworkStream -Klasse ausgeführt werden, ohne dass eine Synchronisierung erforderlich ist. Solange es einen eindeutigen Thread für die Schreibvorgänge und einen eindeutigen Thread für die Lesevorgänge gibt, gibt es keine Kreuzinterferenz zwischen Lese- und Schreibthreads, und es ist keine Synchronisierung erforderlich.