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

Definicja

Rozpoczęcie asynchronicznej operacji odczytu.Begins an asynchronous read operation. (Rozważ użycie ReadAsync(Byte[], Int32, Int32) zamiast niego).(Consider using ReadAsync(Byte[], Int32, Int32) instead.)

public:
 virtual IAsyncResult ^ BeginRead(cli::array <System::Byte> ^ buffer, int offset, int count, AsyncCallback ^ callback, System::Object ^ state);
public virtual IAsyncResult BeginRead (byte[] buffer, int offset, int count, AsyncCallback callback, object state);
abstract member BeginRead : byte[] * int * int * AsyncCallback * obj -> IAsyncResult
override this.BeginRead : byte[] * int * int * AsyncCallback * obj -> IAsyncResult
Public Overridable Function BeginRead (buffer As Byte(), offset As Integer, count As Integer, callback As AsyncCallback, state As Object) As IAsyncResult

Parametry

buffer
Byte[]

Bufor, do którego mają zostać odczytane dane.The buffer to read the data into.

offset
Int32

Przesunięcie bajtu, buffer w którym rozpocznie się zapisywanie danych odczytanych ze strumienia.The byte offset in buffer at which to begin writing data read from the stream.

count
Int32

Maksymalna liczba bajtów do odczytania.The maximum number of bytes to read.

callback
AsyncCallback

Opcjonalne asynchroniczne wywołanie zwrotne, które ma być wywoływane po zakończeniu odczytu.An optional asynchronous callback, to be called when the read is complete.

state
Object

Obiekt udostępniony przez użytkownika, który odróżnia to konkretne asynchroniczne żądanie odczytu z innych żądań.A user-provided object that distinguishes this particular asynchronous read request from other requests.

Zwraca

IAsyncResult Reprezentuje on asynchroniczny odczyt, który nadal może być w stanie oczekiwania.An IAsyncResult that represents the asynchronous read, which could still be pending.

Wyjątki

Podjęto próbę odczytu asynchronicznego poza końcem strumienia lub wystąpił błąd dysku.Attempted an asynchronous read past the end of the stream, or a disk error occurs.

Co najmniej jeden z argumentów jest nieprawidłowy.One or more of the arguments is invalid.

Metody zostały wywołane po zamknięciu strumienia.Methods were called after the stream was closed.

Bieżąca Stream implementacja nie obsługuje operacji odczytu.The current Stream implementation does not support the read operation.

Uwagi

W programie .NET Framework w wersji 4 i starszych do implementowania asynchronicznych operacji We/Wy należy używać metod takich jak BeginRead i EndRead.In the .NET Framework 4 and earlier versions, you have to use methods such as BeginRead and EndRead to implement asynchronous I/O operations. Te metody są nadal dostępne w programie .NET Framework 4.5.NET Framework 4.5 w celu obsługi starszego kodu, jednak nowe metody asynchroniczne, takie jak ReadAsync, WriteAsync CopyToAsync,, i FlushAsync, ułatwiają wdrożenie asynchronicznych operacji we/wy.These methods are still available in the .NET Framework 4.5.NET Framework 4.5 to support legacy code; however, the new async methods, such as ReadAsync, WriteAsync, CopyToAsync, and FlushAsync, help you implement asynchronous I/O operations more easily.

Domyślna implementacja BeginRead w strumieniu Read wywołuje metodę synchronicznie, co oznacza, że Read może blokować pewne strumienie.The default implementation of BeginRead on a stream calls the Read method synchronously, which means that Read might block on some streams. Jednak wystąpienia klas, takie jak i FileStream NetworkStream w pełni obsługują operacje asynchroniczne, jeśli wystąpienia zostały otwarte asynchronicznie.However, instances of classes such as FileStream and NetworkStream fully support asynchronous operations if the instances have been opened asynchronously. W związku z BeginRead tym wywołania nie będą blokować tych strumieni.Therefore, calls to BeginRead will not block on those streams. Aby zapewnić asynchroniczne BeginRead zachowanie, można przesłonić (na przykład za pomocą delegatów asynchronicznych).You can override BeginRead (by using async delegates, for example) to provide asynchronous behavior.

Przekaż wartość EndRead zwracaną do metody strumienia, aby określić, ile bajtów zostało odczytanych i aby zwolnić zasoby systemu operacyjnego używane do odczytu. IAsyncResultPass the IAsyncResult return value to the EndRead method of the stream to determine how many bytes were read and to release operating system resources used for reading. EndReadmusi być wywoływana jednokrotnie dla każdego BeginReadwywołania do.EndRead must be called once for every call to BeginRead. Można to zrobić przy użyciu tego samego kodu, który został wywołany BeginRead , lub w wywołaniu zwrotnym przekazanym do. BeginReadYou can do this either by using the same code that called BeginRead or in a callback passed to BeginRead.

Bieżące położenie w strumieniu jest aktualizowane, gdy zostanie wystawiony asynchroniczny odczyt lub zapis, a nie po zakończeniu operacji we/wy.The current position in the stream is updated when the asynchronous read or write is issued, not when the I/O operation completes.

Wiele jednoczesnych żądań asynchronicznych renderuje kolejność uzupełniania żądań.Multiple simultaneous asynchronous requests render the request completion order uncertain.

CanRead Użyj właściwości, aby określić, czy bieżące wystąpienie obsługuje odczytywanie.Use the CanRead property to determine whether the current instance supports reading.

Jeśli strumień jest zamknięty lub przeszedł nieprawidłowy argument, wyjątki są zgłaszane od BeginReadrazu.If a stream is closed or you pass an invalid argument, exceptions are thrown immediately from BeginRead. Błędy występujące podczas asynchronicznego żądania odczytu, takie jak awaria dysku w trakcie żądania we/wy, występuje w wątku puli wątków i generują wyjątki podczas wywoływania EndRead.Errors that occur during an asynchronous read request, such as a disk failure during the I/O request, occur on the thread pool thread and throw exceptions when calling EndRead.

Dotyczy

Zobacz też