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í.
Spustí asynchronní operaci čtení. (Zvažte místo toho 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.
- offset
- Int32
Posun bajtů, při buffer
kterém se mají začít zapisovat data načtená ze streamu.
- count
- Int32
Maximální počet bajtů ke čtení.
- callback
- AsyncCallback
Volitelné asynchronní zpětné volání, které se má volat po dokončení čtení.
- state
- Object
Objekt zadaný uživatelem, který odlišuje tento konkrétní asynchronní požadavek na čtení od jiných požadavků.
Návraty
Jedná se IAsyncResult o asynchronní čtení, které může být stále čeká na vyřízení.
Výjimky
Došlo k pokusu o asynchronní čtení za koncem datového proudu nebo dojde k chybě disku.
Nejméně jeden 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 předchozích verzích je pro implementaci asynchronních vstupně-výstupních operací nutné použít metody, jako jsou BeginRead a EndRead. Tyto metody jsou stále k dispozici v rozhraní .NET Framework 4.5 pro podporu staršího kódu; Nové asynchronní metody, jako ReadAsyncjsou , WriteAsyncCopyToAsync, a FlushAsync, však pomáhají snadněji implementovat asynchronní vstupně-výstupní operace.
Výchozí implementace ve BeginRead
streamu volá metodu Read synchronně, což znamená, že Read
to může u některých streamů blokovat. Instance tříd, jako FileStream
jsou a NetworkStream
plně podporují asynchronní operace, pokud byly instance otevřeny asynchronně. Volání na BeginRead
tyto streamy proto nebudou blokovat. 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ěte prostředky operačního systému používané ke čtení. EndRead musí být volána jednou pro každé volání do BeginRead. Můžete to provést buď pomocí stejného kódu, který volal BeginRead
, nebo ve zpětném volání předaném do BeginRead
.
Aktuální pozice v datovém proudu se aktualizuje při vydání asynchronního čtení nebo zápisu, ne při dokončení vstupně-výstupní operace.
Několik souběžných asynchronních požadavků činí pořadí dokončení požadavků nejistým.
CanRead Pomocí vlastnosti určete, jestli aktuální instance podporuje čtení.
Pokud je datový proud zavřený nebo předáte neplatný argument, jsou okamžitě vyvolány výjimky z BeginRead
. Chyby, ke kterým dochází během asynchronního požadavku na čtení, například selhání disku během V/V požadavku, se vyskytují ve vlákně fondu vláken a při volání EndRead
vyvolání výjimek .
Platí pro
Viz také
Váš názor
https://aka.ms/ContentUserFeedback.
Připravujeme: V průběhu roku 2024 budeme postupně vyřazovat problémy z GitHub coby mechanismus zpětné vazby pro obsah a nahrazovat ho novým systémem zpětné vazby. Další informace naleznete v tématu:Odeslat a zobrazit názory pro