NetworkStream.BeginWrite(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 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.