CryptoStream.BeginRead(Byte[], Int32, Int32, AsyncCallback, Object) Metoda
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
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ą IAsyncResult
EndRead 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
.