Udostępnij za pośrednictwem


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

Definicja

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

public:
 override IAsyncResult ^ BeginRead(cli::array <System::Byte> ^ array, int offset, int count, AsyncCallback ^ asyncCallback, System::Object ^ asyncState);
public:
 override IAsyncResult ^ BeginRead(cli::array <System::Byte> ^ buffer, int offset, int count, AsyncCallback ^ asyncCallback, System::Object ^ asyncState);
public override IAsyncResult BeginRead (byte[] array, 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 (array As Byte(), offset As Integer, count As Integer, asyncCallback As AsyncCallback, asyncState As Object) As IAsyncResult
Public Overrides Function BeginRead (buffer As Byte(), offset As Integer, count As Integer, asyncCallback As AsyncCallback, asyncState As Object) As IAsyncResult

Parametry

arraybuffer
Byte[]

Tablica bajtów do odczytu danych.

offset
Int32

Przesunięcie bajtu, przy którym rozpocznie się odczytywanie danych ze strumienia.

count
Int32

Maksymalna liczba bajtów do odczytania.

asyncCallback
AsyncCallback

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

asyncState
Object

Obiekt udostępniony 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 były wywoływane po zamknięciu strumienia.

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

Nie można wykonać operacji odczytu, ponieważ strumień jest zamknięty.

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 bajty odczyty w deflatestream, GZipStream i CryptoStream.

Począwszy od .NET Framework 4.5, można wykonywać operacje odczytu asynchronicznego przy użyciu Stream.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 Asynchroniczny plik We/Wy.

IAsyncResult Przekaż wartość zwracaną do EndRead metody strumienia, aby określić liczbę odczytanych bajtów i zwolnić zasoby systemu operacyjnego używane do odczytu. Można to zrobić za pomocą tego samego kodu, który nazwał BeginRead wywołanie zwrotne lub przekazano do BeginReadmetody .

Bieżąca pozycja w strumieniu jest aktualizowana 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żący GZipStream obiekt obsługuje odczyt.

Jeśli strumień jest zamknięty lub przekazujesz nieprawidłowy argument, wyjątki są zgłaszane natychmiast z BeginReadelementu . 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 EndReadmetody .

Dotyczy