Stream.BeginRead(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.
Startet einen asynchronen Lesevorgang. (Erwägen Sie stattdessen die Verwendung ReadAsync(Byte[], Int32, Int32) .)
public:
virtual IAsyncResult ^ BeginRead(cli::array <System::Byte> ^ buffer, int offset, int count, AsyncCallback ^ callback, System::Object ^ state);
public virtual IAsyncResult BeginRead(byte[] buffer, int offset, int count, AsyncCallback? callback, object? state);
public virtual IAsyncResult BeginRead(byte[] buffer, int offset, int count, AsyncCallback callback, object state);
public virtual IAsyncResult BeginRead(byte[] buffer, int offset, int count, AsyncCallback callback, object? state);
abstract member BeginRead : byte[] * int * int * AsyncCallback * obj -> IAsyncResult
override this.BeginRead : byte[] * int * int * AsyncCallback * obj -> IAsyncResult
Public Overridable 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, in buffer dem mit dem Schreiben von Daten aus dem Datenstrom begonnen werden soll.
- count
- Int32
Die maximale Anzahl der zu lesenden Bytes.
- callback
- AsyncCallback
Ein optionaler asynchroner Rückruf, der aufgerufen werden soll, wenn der Lesevorgang abgeschlossen ist.
- state
- Object
Ein vom Benutzer bereitgestelltes Objekt, das diese spezielle asynchrone Leseanforderung von anderen Anforderungen unterscheidet.
Gibt zurück
Ein IAsyncResult Wert, der den asynchronen Lesevorgang darstellt, der noch aussteht.
Ausnahmen
Es wurde versucht, einen asynchronen Lesevorgang über das Ende des Datenstroms hinaus zu lesen, oder es tritt ein Datenträgerfehler auf.
Mindestens eines der Argumente ist ungültig.
Methoden wurden aufgerufen, nachdem der Datenstrom geschlossen wurde.
Die aktuelle Stream Implementierung unterstützt den Lesevorgang nicht.
Hinweise
In .NET Framework 4 und früheren Versionen müssen Sie Methoden wie BeginRead z. B. und EndRead 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 BeginRead einen Datenstrom ruft die Read Methode synchron auf, was bedeutet, dass dies Read 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 BeginRead für diese Datenströme nicht blockiert. Sie können z. B. asynchrone Stellvertretungen außer Kraft setzen BeginRead , um asynchrones Verhalten bereitzustellen.
Übergeben Sie den IAsyncResult Rückgabewert an die EndRead Methode des Datenstroms, um zu bestimmen, wie viele Bytes gelesen wurden, und um Betriebssystemressourcen freizugeben, die zum Lesen verwendet werden.
EndReadmuss einmal für jeden Anruf aufgerufen werden.BeginRead Dazu können Sie entweder denselben Code verwenden, der aufgerufen BeginRead oder in einem Rückruf übergeben wird BeginRead.
Die aktuelle Position im Datenstrom wird aktualisiert, wenn der asynchrone Lese- oder Schreibzugriff ausgegeben wird, nicht, wenn der E/A-Vorgang abgeschlossen ist.
Mehrere gleichzeitige asynchrone Anforderungen rendern die Anforderungsabschlussreihenfolge unsicher.
Verwenden Sie die CanRead Eigenschaft, um zu ermitteln, ob die aktuelle Instanz das Lesen unterstützt.
Wenn ein Datenstrom geschlossen wird oder Sie ein ungültiges Argument übergeben, werden Ausnahmen sofort von BeginRead. 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 beim Aufrufen aus EndRead.