Freigeben über


CryptoStream.BeginRead(Byte[], Int32, Int32, AsyncCallback, Object) Methode

Definition

Beginnt einen asynchronen Lesevorgang. (Verwenden Sie stattdessen ReadAsync.)

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

Parameter

buffer
Byte[]

Der Puffer, in den die Daten gelesen werden sollen.

offset
Int32

Der Byteoffset im buffer, ab dem aus dem Stream gelesene Daten geschrieben werden.

count
Int32

Die maximale Anzahl der zu lesenden Bytes.

callback
AsyncCallback

Ein optionaler asynchroner Rückruf, der nach Abschluss des Lesevorgangs aufgerufen werden soll.

state
Object

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

Gibt zurück

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

Ausnahmen

Es wurde versucht, einen asynchronen Lesevorgang ü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 Lesevorgang nicht.

Hinweise

Wichtig

Ab .NET 6 liest diese Methode möglicherweise nicht mehr so viele Bytes, wie angefordert wurden. Weitere Informationen finden Sie unter Partielle und Null-Byte-Lesevorgänge in DeflateStream, GZipStream und CryptoStream.

In .NET Framework 4 und vorherigen Versionen müssen Sie Methoden wie BeginRead und EndRead verwenden, um asynchrone E/A-Vorgänge zu implementieren. Diese Methoden sind noch in aktuellen Versionen verfügbar, um Legacycode zu unterstützen. Die neuen asynchronen Methoden wie ReadAsync, WriteAsync, CopyToAsyncund FlushAsynchelfen Ihnen jedoch, asynchrone E/A-Vorgänge einfacher zu implementieren.

Übergeben Sie den IAsyncResult Rückgabewert an die EndRead -Methode des Datenstroms, um zu bestimmen, wie viele Bytes gelesen wurden, und zum Freigeben von Betriebssystemressourcen, die zum Lesen verwendet werden. EndRead muss einmal für jeden Aufruf von BeginReadaufgerufen werden. Dazu können Sie entweder denselben Code verwenden, der aufgerufen hat BeginRead , oder in einem an übergebenen BeginReadRückruf.

Die aktuelle Position im Stream wird aktualisiert, wenn das asynchrone Lesen oder Schreiben ausgegeben wird, nicht nach Abschluss des E/A-Vorgangs.

Bei mehreren gleichzeitigen asynchronen Anforderungen wird die Reihenfolge der Anforderungsvervollständigung unsicher.

Verwenden Sie die CanRead -Eigenschaft, um zu bestimmen, ob die aktuelle Instanz Lesevorgänge unterstützt.

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

Gilt für: