Sdílet prostřednictvím


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

Definice

Spustí asynchronní operaci čtení. (Zvažte místo toho použití 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

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á IAsyncResult se 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 došlo 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

Důležité

Počínaje verzí .NET 6 nemusí tato metoda číst tolik bajtů, kolik bylo požadováno. Další informace najdete v tématu Částečné a nulové bajtové čtení v deflateStream, GZipStream a CryptoStream.

V rozhraní .NET Framework 4 a starších verzích musíte k implementaci asynchronních vstupně-výstupních operací použít metody, jako BeginRead jsou a EndRead . Tyto metody jsou stále k dispozici v aktuálních verzích 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.

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í, jako je selhání disku během V/V požadavku, se vyskytují ve vlákně fondu vláken a při volání EndReadvyvolání výjimek .

Platí pro