Freigeben über


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

Definition

Beginnt einen asynchronen Lesevorgang aus dem 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

Parameter

buffer
Byte[]

Ein Array vom Typ Byte , das der Speicherort im Speicher zum Speichern von Daten ist, die aus der Datei NetworkStreamgelesen werden.

offset
Int32

Der Speicherort buffer , an dem die Daten gespeichert werden sollen.

countsize
Int32

Die Anzahl der Bytes, aus der NetworkStreamgelesen werden soll.

callback
AsyncCallback

Der Delegat AsyncCallback , der nach BeginRead(Byte[], Int32, Int32, AsyncCallback, Object) Abschluss ausgeführt wird.

state
Object

Ein Objekt, das alle zusätzlichen benutzerdefinierten Daten enthält.

Gibt zurück

Ein IAsyncResult Wert, der 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 Paramaters.

- oder -

Dies size ist kleiner als 0.

- oder -

Dies size ist größer als die Länge des buffer Minuswerts des offset Parameters.

Die zugrunde liegende Socket Ist geschlossen.

- oder -

Fehler beim Lesen aus dem Netzwerk.

- oder -

Fehler beim Zugriff auf den Socket.

Das NetworkStream ist geschlossen.

Hinweise

Von Bedeutung

Dies ist eine Kompatibilitäts-API. Es wird nicht empfohlen, die APM-Methoden (Begin/End) für die neue Entwicklung zu verwenden. Verwenden Sie stattdessen die aufgabenbasierten Entsprechungen.

Sie können einen Rückruf übergeben, der AsyncCallback implementiert wird, um über den Abschluss des Vorgangs BeginRead benachrichtigt zu werden. Wenn der zugrunde liegende Netzwerkstapel den Vorgang synchron abgeschlossen hat, wird der Rückruf während des Aufrufs BeginReadinline ausgeführt. In diesem Fall wird die CompletedSynchronously Eigenschaft für die zurückgegebene IAsyncResult Eigenschaft so festgelegt true , dass die Methode synchron abgeschlossen wurde. Verwenden Sie die AsyncState Eigenschaft des IAsyncResult Zustandsobjekts, das an die BeginRead Methode übergeben wird.

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, bis zur Anzahl der by den count Parameter angegebenen Bytes.

Hinweis

Wenn Sie eine IOExceptionEigenschaft erhalten, überprüfen Sie die InnerException Eigenschaft, um zu ermitteln, ob sie durch eine SocketException. Wenn ja, verwenden Sie die ErrorCode Eigenschaft, um den spezifischen Fehlercode abzurufen.

Lese- und Schreibvorgänge können gleichzeitig für eine Instanz 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 Querinteraktionen zwischen Lese- und Schreibthreads, und es ist keine Synchronisierung erforderlich.

Gilt für:

Weitere Informationen