Udostępnij za pośrednictwem


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

Definicja

Rozpoczyna asynchroniczną operację odczytu. (Rozważ użycie ReadAsync zamiast tego).

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[]

Bufor do odczytu danych.

offset
Int32

Przesunięcie bajtów, w buffer którym rozpoczyna się zapisywanie danych odczytanych ze strumienia.

count
Int32

Maksymalna liczba bajtów do odczytania.

callback
AsyncCallback

Opcjonalne wywołanie asynchroniczne, które ma być wywoływane po zakończeniu odczytu.

state
Object

Obiekt dostarczony przez użytkownika, który rozróżnia to konkretne asynchroniczne żądanie odczytu z innych żądań.

Zwraca

Element IAsyncResult reprezentujący odczyt asynchroniczny, który nadal może być oczekujący.

Wyjątki

Podjęto próbę asynchronicznego odczytu poza końcem strumienia lub wystąpił błąd dysku.

Co najmniej jeden argument jest nieprawidłowy.

Metody zostały wywołane po zamknięciu strumienia.

Bieżąca Stream implementacja nie obsługuje operacji odczytu.

Uwagi

Ważne

Począwszy od platformy .NET 6, ta metoda może nie odczytywać tyle bajtów, ile żądano. Aby uzyskać więcej informacji, zobacz Częściowe i zerowe odczyty odczytów w DeflateStream, GZipStream i CryptoStream.

W programie .NET Framework 4 i starszych wersjach należy użyć metod, takich jak BeginRead i EndRead , aby zaimplementować asynchroniczne operacje we/wy. Te metody są nadal dostępne w bieżących wersjach do obsługi starszego kodu; jednak nowe metody asynchroniczne, takie jak ReadAsync, WriteAsync, CopyToAsynci FlushAsync, ułatwiają implementowanie asynchronicznych operacji we/wy.

Przekaż wartość zwracaną IAsyncResultEndRead do metody strumienia, aby określić liczbę odczytanych bajtów i zwolnić zasoby systemu operacyjnego używane do odczytu. EndRead musi być wywoływany raz dla każdego wywołania metody BeginRead. Można to zrobić przy użyciu tego samego kodu, który wywołuje BeginRead metodę lub w wywołaniu zwrotnym przekazanym do metody BeginRead.

Bieżące położenie w strumieniu jest aktualizowane po wydaniu asynchronicznego odczytu lub zapisu, a nie po zakończeniu operacji we/wy.

Wiele równoczesnych żądań asynchronicznych sprawia, że kolejność ukończenia żądania jest niepewna.

Użyj właściwości , CanRead aby określić, czy bieżące wystąpienie obsługuje odczyt.

Jeśli strumień jest zamknięty lub przekazujesz nieprawidłowy argument, wyjątki są zgłaszane natychmiast z elementu BeginRead. Błędy występujące podczas asynchronicznego żądania odczytu, takie jak awaria dysku podczas żądania we/wy, występują w wątku puli wątków i zgłaszają wyjątki podczas wywoływania metody EndRead.

Dotyczy