Freigeben über


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

Definition

Beginnt einen asynchronen Schreibvorgang. (Verwenden Sie stattdessen WriteAsync(Byte[], Int32, Int32).)

public:
 virtual IAsyncResult ^ BeginWrite(cli::array <System::Byte> ^ buffer, int offset, int count, AsyncCallback ^ callback, System::Object ^ state);
public virtual IAsyncResult BeginWrite (byte[] buffer, int offset, int count, AsyncCallback? callback, object? state);
public virtual IAsyncResult BeginWrite (byte[] buffer, int offset, int count, AsyncCallback callback, object state);
public virtual IAsyncResult BeginWrite (byte[] buffer, int offset, int count, AsyncCallback callback, object? state);
abstract member BeginWrite : byte[] * int * int * AsyncCallback * obj -> IAsyncResult
override this.BeginWrite : byte[] * int * int * AsyncCallback * obj -> IAsyncResult
Public Overridable Function BeginWrite (buffer As Byte(), offset As Integer, count As Integer, callback As AsyncCallback, state As Object) As IAsyncResult

Parameter

buffer
Byte[]

Der Puffer, aus dem Daten geschrieben werden sollen.

offset
Int32

Der Byteoffset im buffer, ab dem geschrieben werden soll.

count
Int32

Die maximale Anzahl der zu schreibenden Bytes.

callback
AsyncCallback

Ein optionaler asynchroner Rückruf, der nach Abschluss des Schreibvorgangs aufgerufen wird.

state
Object

Ein vom Benutzer bereitgestelltes Objekt, das diese asynchrone Schreibanforderung von anderen Anforderungen unterscheidet.

Gibt zurück

Ein IAsyncResult, das den asynchronen Schreibvorgang darstellt, der möglicherweise noch aussteht.

Ausnahmen

Es wurde versucht, einen asynchronen Schreibvorgang über das Ende des Streams hinaus durchzuführen, oder es ist ein Datenträgerfehler aufgetreten.

Mindestens eines der Argumente ist ungültig.

Es wurden Methoden aufgerufen, nachdem der Stream geschlossen wurde.

Die aktuelle Stream-Implementierung unterstützt den Schreibvorgang nicht.

Hinweise

In .NET Framework 4 und vorherigen Versionen müssen Sie Methoden wie BeginWrite und EndWrite verwenden, um asynchrone E/A-Vorgänge zu implementieren. Diese Methoden sind weiterhin im .NET Framework 4.5 verfügbar, um Legacycode zu unterstützen. Die neuen asynchronen Methoden wie ReadAsync, WriteAsync, CopyToAsync, und FlushAsynchelfen Ihnen jedoch, asynchrone E/A-Vorgänge einfacher zu implementieren.

Die Standardimplementierung von BeginWrite in einem Stream ruft die Write Methode synchron auf, was bedeutet, dass einige Write Streams blockiert werden können. Instanzen von Klassen wie FileStream und NetworkStream unterstützen jedoch vollständig asynchrone Vorgänge, wenn die Instanzen asynchron geöffnet wurden. Daher werden Aufrufe von BeginWrite für diese Datenströme nicht blockiert. Sie können (z. B. mithilfe von asynchronen Delegaten) überschreiben BeginWrite , um asynchrones Verhalten bereitzustellen.

Übergeben Sie das IAsyncResult von der aktuellen Methode zurückgegebene an, um EndWrite sicherzustellen, dass der Schreibvorgang die Ressourcen ordnungsgemäß abschließt und freigibt. EndWrite muss einmal für jeden Aufruf von BeginWriteaufgerufen werden. Dazu können Sie entweder denselben Code verwenden, der aufgerufen BeginWrite hat, oder in einem an übergebenen BeginWriteRückruf. Wenn während eines asynchronen Schreibvorgangs ein Fehler auftritt, wird eine Ausnahme erst ausgelöst, wenn EndWrite mit dem IAsyncResult von dieser Methode zurückgegebenen aufgerufen wird.

Wenn ein Stream beschreibbar ist, erweitert das Schreiben am Ende des Datenstroms den Stream.

Die aktuelle Position im Stream wird aktualisiert, wenn Sie den asynchronen Lese- oder Schreibvorgang ausstellen, nicht nach Abschluss des E/A-Vorgangs. Mehrere gleichzeitige asynchrone Anforderungen machen die Anforderungsvervollständigungsreihenfolge unsicher.

Verwenden Sie die CanWrite -Eigenschaft, um zu bestimmen, ob die aktuelle instance das Schreiben unterstützt.

Wenn ein Stream geschlossen wird oder Sie ein ungültiges Argument übergeben, werden Ausnahmen sofort von BeginWriteausgelöst. Fehler, die während einer asynchronen Schreibanforderung auftreten, z. B. ein Datenträgerfehler während der E/A-Anforderung, treten im Threadpoolthread auf und lösen Beim Aufrufen EndWritevon Ausnahmen aus.

Gilt für:

Weitere Informationen