Udostępnij za pośrednictwem


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

Definicja

Rozpoczyna asynchroniczną operację odczytu. (Zamiast tego rozważ użycie ReadAsync(Byte[], Int32, Int32) metody ).

public:
 override IAsyncResult ^ BeginRead(cli::array <System::Byte> ^ buffer, int offset, int count, AsyncCallback ^ asyncCallback, System::Object ^ asyncState);
public:
 override IAsyncResult ^ BeginRead(cli::array <System::Byte> ^ array, int offset, int count, AsyncCallback ^ asyncCallback, System::Object ^ asyncState);
public override IAsyncResult BeginRead (byte[] buffer, int offset, int count, AsyncCallback? asyncCallback, object? asyncState);
public override IAsyncResult BeginRead (byte[] buffer, int offset, int count, AsyncCallback asyncCallback, object asyncState);
public override IAsyncResult BeginRead (byte[] array, int offset, int count, AsyncCallback asyncCallback, object asyncState);
override this.BeginRead : byte[] * int * int * AsyncCallback * obj -> IAsyncResult
override this.BeginRead : byte[] * int * int * AsyncCallback * obj -> IAsyncResult
Public Overrides Function BeginRead (buffer As Byte(), offset As Integer, count As Integer, asyncCallback As AsyncCallback, asyncState As Object) As IAsyncResult
Public Overrides Function BeginRead (array As Byte(), offset As Integer, count As Integer, asyncCallback As AsyncCallback, asyncState As Object) As IAsyncResult

Parametry

bufferarray
Byte[]

Tablica bajtów do odczytu danych.

offset
Int32

Przesunięcie bajtu, przy którym należy rozpocząć odczytywanie danych ze strumienia.

count
Int32

Maksymalna liczba bajtów do odczytania.

asyncCallback
AsyncCallback

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

asyncState
Object

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

Zwraca

Obiekt reprezentujący operację odczytu asynchronicznego, która nadal może być oczekująca.

Wyjątki

Metoda próbowała odczytać asynchronicznie obok końca 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 DeflateStream implementacja nie obsługuje operacji odczytu.

Nie można ukończyć tego wywołania.

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.

Począwszy od .NET Framework 4.5, można wykonywać asynchroniczne operacje odczytu przy użyciu ReadAsync metody . Metoda BeginRead jest nadal dostępna w bieżących wersjach, aby obsługiwać starszy kod. Można jednak łatwiej zaimplementować asynchroniczne operacje we/wy przy użyciu nowych metod asynchronicznych. Aby uzyskać więcej informacji, zobacz Asynchroniczne operacje we/wy plików.

Przekaż wartość zwracaną IAsyncResultEndRead do metody strumienia, aby określić liczbę odczytanych bajtów i zwolnić zasoby systemu operacyjnego używane do odczytu. 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 asynchronicznej operacji odczytu lub zapisu, a nie po zakończeniu operacji we/wy.

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

CanRead Użyj właściwości , aby określić, czy bieżący DeflateStream obiekt 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