Freigeben über


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

Definition

Startet einen asynchronen Schreibvorgang. (Erwägen Sie stattdessen die Verwendung 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 zum Schreiben von Daten aus.

offset
Int32

Der Byteoffset buffer , von dem aus mit dem Schreiben begonnen werden soll.

count
Int32

Die maximale Anzahl von Bytes, die geschrieben werden sollen.

callback
AsyncCallback

Ein optionaler asynchroner Rückruf, der aufgerufen werden soll, wenn der Schreibvorgang abgeschlossen ist.

state
Object

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

Gibt zurück

Ein IAsyncResult Wert, der den asynchronen Schreibvorgang darstellt, der noch aussteht.

Ausnahmen

Es wurde versucht, einen asynchronen Schreibvorgang über das Ende des Datenstroms hinaus zu schreiben, oder ein Datenträgerfehler tritt auf.

Mindestens eines der Argumente ist ungültig.

Methoden wurden aufgerufen, nachdem der Datenstrom geschlossen wurde.

Die aktuelle Stream Implementierung unterstützt den Schreibvorgang nicht.

Hinweise

In .NET Framework 4 und früheren Versionen müssen Sie Methoden wie BeginWrite z. B. und EndWrite zum Implementieren asynchroner E/A-Vorgänge verwenden. Diese Methoden sind weiterhin in .NET Framework 4.5 verfügbar, um Legacycode zu unterstützen. Die neuen asynchronen Methoden, z ReadAsync. B. , WriteAsync, CopyToAsyncund FlushAsync, helfen Ihnen jedoch, asynchrone E/A-Vorgänge einfacher zu implementieren.

Die Standardimplementierung für BeginWrite einen Datenstrom ruft die Write Methode synchron auf, was bedeutet, dass dies Write für einige Datenströme blockiert werden kann. Instanzen von Klassen wie und FileStreamNetworkStream unterstützen asynchrone Vorgänge jedoch vollständig, wenn die Instanzen asynchron geöffnet wurden. Daher werden Aufrufe BeginWrite für diese Datenströme nicht blockiert. Sie können z. B. asynchrone Stellvertretungen außer Kraft setzen BeginWrite , um asynchrones Verhalten bereitzustellen.

Übergeben Sie die IAsyncResult von der aktuellen Methode zurückgegebene Methode, um EndWrite sicherzustellen, dass der Schreibvorgang abgeschlossen ist und Ressourcen entsprechend freigibt. EndWritemuss einmal für jeden Anruf aufgerufen werden.BeginWrite Dazu können Sie entweder denselben Code verwenden, der aufgerufen BeginWrite oder in einem Rückruf übergeben wird BeginWrite. Wenn während eines asynchronen Schreibvorgangs ein Fehler auftritt, wird eine Ausnahme erst ausgelöst, wenn EndWrite sie mit der IAsyncResult von dieser Methode zurückgegebenen aufgerufen wird.

Wenn ein Datenstrom schreibbar ist, wird der Datenstrom durch Schreiben am Ende des Datenstroms erweitert.

Die aktuelle Position im Datenstrom wird aktualisiert, wenn Sie das asynchrone Lesen oder Schreiben ausgeben, nicht, wenn der E/A-Vorgang abgeschlossen ist. Mehrere gleichzeitige asynchrone Anforderungen rendern die Anforderungsabschlussreihenfolge unsicher.

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

Wenn ein Datenstrom geschlossen wird oder Sie ein ungültiges Argument übergeben, werden Ausnahmen sofort von BeginWrite. 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 Ausnahmen beim Aufrufen aus EndWrite.

Gilt für:

Weitere Informationen