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 bajtów, w buffer którym rozpocznie się zapisywanie danych odczytanych ze strumienia.

count
Int32

Maksymalna liczba bajtów do odczytania.

callback
AsyncCallback

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

state
Object

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

Zwraca

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

Wyjątki

buffer to 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 .NET Framework 4 i starszych wersjach należy używać metod, takich jak BeginRead i EndRead do implementowania asynchronicznych operacji plików. Te metody są nadal dostępne w .NET Framework 4.5 do obsługi starszego kodu. Jednak nowe metody asynchroniczne, takie jak ReadAsync, WriteAsynci FlushAsync, ułatwiają implementowanie operacji asynchronicznych.

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

Uwaga

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

EndRead należy wywołać w tym IAsyncResult celu, aby dowiedzieć się, ile bajtów zostało odczytanych.

Dotyczy