Udostępnij za pośrednictwem


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

Definicja

Rozpoczyna operację odczytu asynchronicznego. (Rozważ użycie ReadAsync(Byte[], Int32, Int32, CancellationToken) 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);
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 bajtu, w buffer którym można rozpocząć 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

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

Wyjątki

Parametr buffer ma wartość null.

offset lub count jest ujemny.

Podjęto próbę asynchronicznego odczytu obok końca strumienia.

Długość buforu minus offset jest mniejsza niż count.

Bieżący strumień nie obsługuje operacji odczytu.

Uwagi

W programie .NET Framework 4 i starszych wersjach należy używać metod takich jak BeginRead i EndRead do implementowania asynchronicznych operacji na plikach. Te metody są nadal dostępne w programie .NET Framework 4.5 do obsługi starszego kodu; jednak nowe metody asynchroniczne, takie jak ReadAsync, WriteAsynci FlushAsync, ułatwiają implementowanie asynchronicznych operacji na plikach.

EndWrite musi być wywoływana dokładnie raz dla każdego wywołania metody BeginRead. Nie można zakończyć procesu odczytu przed rozpoczęciem innego odczytu może spowodować niepożądane zachowanie, takie jak zakleszczenie.

Uwaga / Notatka

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

EndRead Aby dowiedzieć się, ile bajtów zostało odczytanych, należy wywołać za pomocą polecenia IAsyncResult .

Dotyczy