Stream.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. (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 BeginWrite
Rü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 BeginWrite
ausgelö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 EndWrite
von Ausnahmen aus.