Freigeben über


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

Definition

Beginnt einen asynchronen Schreibvorgang in einen Stream.

public:
 override IAsyncResult ^ BeginWrite(cli::array <System::Byte> ^ buffer, int offset, int size, AsyncCallback ^ callback, System::Object ^ state);
public:
 override IAsyncResult ^ BeginWrite(cli::array <System::Byte> ^ buffer, int offset, int count, AsyncCallback ^ callback, System::Object ^ state);
public override IAsyncResult BeginWrite (byte[] buffer, int offset, int size, AsyncCallback? callback, object? state);
public override IAsyncResult BeginWrite (byte[] buffer, int offset, int count, AsyncCallback? callback, object? state);
public override IAsyncResult BeginWrite (byte[] buffer, int offset, int size, AsyncCallback callback, object state);
override this.BeginWrite : byte[] * int * int * AsyncCallback * obj -> IAsyncResult
override this.BeginWrite : byte[] * int * int * AsyncCallback * obj -> IAsyncResult
Public Overrides Function BeginWrite (buffer As Byte(), offset As Integer, size As Integer, callback As AsyncCallback, state As Object) As IAsyncResult
Public Overrides Function BeginWrite (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 die Daten enthält, die in den NetworkStream geschrieben werden sollen.

offset
Int32

Die Position im buffer, an der mit dem Senden der Daten begonnen werden soll.

sizecount
Int32

Die Anzahl der Bytes, die in den NetworkStream geschrieben werden sollen.

callback
AsyncCallback

Der AsyncCallback-Delegat, der nach Abschluss von BeginWrite(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 von buffer.

- oder -

Der size-Parameter 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 Schreiben in das 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 neue Entwicklungen zu verwenden. Verwenden Sie stattdessen die aufgabenbasierten Entsprechungen.

Sie können einen Rückruf übergeben, der implementiert wird, BeginWrite um über den Abschluss des Vorgangs AsyncCallback benachrichtigt zu werden. Beachten Sie, dass der Rückruf während des Aufrufs BeginWritevon inline ausgeführt wird, wenn der zugrunde liegende Netzwerkstapel den Vorgang synchron abschließt. In diesem Fall wird die CompletedSynchronously Eigenschaft für die zurückgegebene 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 BeginWrite abzurufen.

Der BeginWrite Vorgang muss durch Aufrufen der EndWrite -Methode abgeschlossen werden. In der Regel wird die -Methode vom bereitgestellten AsyncCallback Delegat aufgerufen. EndWrite blockiert den aufrufenden Thread, bis der Vorgang abgeschlossen ist.

Hinweis

Wenn Sie eine IOExceptionerhalten, überprüfen Sie die InnerException -Eigenschaft, um zu ermitteln, ob sie durch ein 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 Querinterfernz zwischen Lese- und Schreibthreads, und es ist keine Synchronisierung erforderlich.

Gilt für:

Weitere Informationen