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

Definition

Startet einen asynchronen Schreibvorgang.Begins an asynchronous write operation. (Verwenden Sie stattdessen WriteAsync(Byte[], Int32, Int32).)(Consider using WriteAsync(Byte[], Int32, Int32) instead.)

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);
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

Parameters

buffer
Byte[]

Der Puffer, aus dem die Daten geschrieben werden.The buffer to write data from.

offset
Int32

Der Byteoffset im buffer, ab dem geschrieben werden soll.The byte offset in buffer from which to begin writing.

count
Int32

Die maximal zu schreibende Anzahl von Byte.The maximum number of bytes to write.

callback
AsyncCallback

Ein optionaler asynchroner Rückruf, der ausgeführt wird, wenn der Schreibvorgang abgeschlossen wurde.An optional asynchronous callback, to be called when the write is complete.

state
Object

Ein vom Benutzer bereitgestelltes Objekt, das zwischen dieser bestimmten asynchronen Schreibanforderung und anderen Anforderungen unterscheidet.A user-provided object that distinguishes this particular asynchronous write request from other requests.

Returns

IAsyncResult

Ein IAsyncResult, das den asynchronen Schreibvorgang darstellt, der möglicherweise noch aussteht.An IAsyncResult that represents the asynchronous write, which could still be pending.

Exceptions

Es wurde versucht, einen asynchronen Schreibvorgang über das Ende des Streams hinaus durchzuführen, oder es ist ein Datenträgerfehler aufgetreten.Attempted an asynchronous write past the end of the stream, or a disk error occurs.

Mindestens eines der Argumente ist ungültig.One or more of the arguments is invalid.

Es wurden Methoden aufgerufen, nachdem der Stream geschlossen wurde.Methods were called after the stream was closed.

Die aktuelle Stream-Implementierung unterstützt den Schreibvorgang nicht.The current Stream implementation does not support the write operation.

Remarks

In .NET Framework 4 und vorherigen Versionen müssen Sie Methoden wie BeginWrite und EndWrite verwenden, um asynchrone E/A-Vorgänge zu implementieren.In the .NET Framework 4 and earlier versions, you have to use methods such as BeginWrite and EndWrite to implement asynchronous I/O operations. Diese Methoden sind weiterhin im .NET Framework 4.5.NET Framework 4.5 verfügbar, um Legacy Code zu unterstützen. die neuen Async-Methoden, wie z. b. ReadAsync, WriteAsync, CopyToAsyncund FlushAsync, unterstützen Sie jedoch bei der einfacheren Implementierung asynchroner e/a-Vorgänge.These methods are still available in the .NET Framework 4.5.NET Framework 4.5 to support legacy code; however, the new async methods, such as ReadAsync, WriteAsync, CopyToAsync, and FlushAsync, help you implement asynchronous I/O operations more easily.

Die Standard Implementierung von BeginWrite in einem Stream ruft die Methode Write synchron auf, was bedeutet, dass Write in einigen Streams blockieren könnte.The default implementation of BeginWrite on a stream calls the Write method synchronously, which means that Write might block on some streams. Instanzen von Klassen, z. b. FileStream und NetworkStream, unterstützen asynchrone Vorgänge jedoch vollständig, wenn die Instanzen asynchron geöffnet wurden.However, instances of classes such as FileStream and NetworkStream fully support asynchronous operations if the instances have been opened asynchronously. Daher werden Aufrufe von BeginWrite für diese Streams nicht blockiert.Therefore, calls to BeginWrite will not block on those streams. Sie können BeginWrite überschreiben (z. b. mithilfe von Async-Delegaten), um asynchrones Verhalten bereitzustellen.You can override BeginWrite (by using async delegates, for example) to provide asynchronous behavior.

Übergeben Sie den von der aktuellen Methode zurückgegebenen IAsyncResult an EndWrite, um sicherzustellen, dass der Schreibvorgang abgeschlossen ist und Ressourcen entsprechend freigibt.Pass the IAsyncResult returned by the current method to EndWrite to ensure that the write completes and frees resources appropriately. EndWrite müssen für jeden Aufruf von BeginWriteeinmal aufgerufen werden.EndWrite must be called once for every call to BeginWrite. Hierzu können Sie den gleichen Code verwenden, der auch BeginWrite aufgerufen hat, oder in einem Rückruf, der an BeginWriteübermittelt wurde.You can do this either by using the same code that called BeginWrite or in a callback passed to BeginWrite. Wenn ein Fehler während eines asynchronen Schreibzugriffs auftritt, wird eine Ausnahme erst ausgelöst, wenn EndWrite mit dem IAsyncResult aufgerufen wird, der von dieser Methode zurückgegeben wird.If an error occurs during an asynchronous write, an exception will not be thrown until EndWrite is called with the IAsyncResult returned by this method.

Wenn ein Datenstrom beschreibbar ist, wird der Stream durch Schreiben am Ende des Streams erweitert.If a stream is writable, writing at the end of the stream expands the stream.

Die aktuelle Position im Stream wird aktualisiert, wenn Sie den asynchronen Lese-oder Schreibvorgang ausgeben, nicht, wenn der e/a-Vorgang abgeschlossen ist.The current position in the stream is updated when you issue the asynchronous read or write, not when the I/O operation completes. Durch mehrere gleichzeitige asynchrone Anforderungen wird die Reihenfolge der Anforderungs Vervollständigung unsicher.Multiple simultaneous asynchronous requests render the request completion order uncertain.

Verwenden Sie die Eigenschaft CanWrite, um zu bestimmen, ob die aktuelle Instanz Schreibvorgänge unterstützt.Use the CanWrite property to determine whether the current instance supports writing.

Wenn ein Stream geschlossen wird oder Sie ein ungültiges Argument übergeben, werden Ausnahmen sofort aus BeginWriteausgelöst.If a stream is closed or you pass an invalid argument, exceptions are thrown immediately from BeginWrite. Fehler, die während einer asynchronen Schreib Anforderung auftreten, z. b. ein Datenträger Fehler während der e/a-Anforderung, treten im Thread Pool Thread auf und lösen Ausnahmen aus, wenn EndWriteaufgerufen wird.Errors that occur during an asynchronous write request, such as a disk failure during the I/O request, occur on the thread pool thread and throw exceptions when calling EndWrite.

Applies to

See also