Stream.BeginRead(Byte[], Int32, Int32, AsyncCallback, Object) Metoda
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Zahájí asynchronní operaci čtení. (Místo toho zvažte použití 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
Parametry
- buffer
- Byte[]
Vyrovnávací paměť pro čtení dat do.
- offset
- Int32
Posun bajtů, při buffer kterém se mají začít zapisovat data načtená z datového proudu.
- count
- Int32
Maximální počet bajtů, které se mají přečíst.
- callback
- AsyncCallback
Volitelné asynchronní zpětné volání, které se má volat při dokončení čtení.
- state
- Object
Objekt poskytovaný uživatelem, který rozlišuje tento konkrétní asynchronní požadavek na čtení od jiných požadavků.
Návraty
Představuje IAsyncResult asynchronní čtení, které může být stále čeká na vyřízení.
Výjimky
Došlo k pokusu o asynchronní čtení po konci datového proudu nebo dojde k chybě disku.
Jeden nebo více argumentů je neplatné.
Metody byly volány po zavření datového proudu.
Aktuální Stream implementace nepodporuje operaci čtení.
Poznámky
V rozhraní .NET Framework 4 a starších verzích musíte použít metody, jako BeginRead jsou a EndRead implementovat asynchronní vstupně-výstupní operace. Tyto metody jsou stále k dispozici v rozhraní .NET Framework 4.5 pro podporu staršího kódu; Nové asynchronní metody, například ReadAsync, WriteAsync, CopyToAsynca FlushAsync, vám však pomáhají snadněji implementovat asynchronní vstupně-výstupní operace.
Výchozí implementace streamu BeginRead volá metodu Read synchronně, což znamená, že Read může blokovat některé datové proudy. Instance tříd, jako FileStream jsou a NetworkStream plně podporují asynchronní operace, pokud byly instance otevřeny asynchronně. Proto volání, která nebudou BeginRead u těchto datových proudů blokovaná. Asynchronní chování můžete přepsat BeginRead (například pomocí asynchronních delegátů).
Předejte návratovou IAsyncResult hodnotu EndRead metodě datového proudu, abyste zjistili, kolik bajtů bylo přečteno a uvolní prostředky operačního systému používané ke čtení.
EndRead musí být volána jednou pro každé volání BeginRead. Můžete to provést buď pomocí stejného kódu, který volal BeginRead , nebo v zpětném volání předané BeginRead.
Aktuální pozice ve streamu se aktualizuje při vydání asynchronního čtení nebo zápisu, ne při dokončení vstupně-výstupní operace.
Více souběžných asynchronních požadavků vykreslí pořadí dokončení požadavku nejistě.
CanRead Pomocí vlastnosti určete, zda aktuální instance podporuje čtení.
Pokud je datový proud uzavřen nebo předáte neplatný argument, výjimky jsou vyvolány okamžitě z BeginRead. Chyby, ke kterým dochází během asynchronního požadavku na čtení, například selhání disku během vstupně-výstupního požadavku, dochází ve vlákně fondu vláken a při volání EndReadvyvolá výjimku .