Compartir por


Stream.BeginRead(Byte[], Int32, Int32, AsyncCallback, Object) Método

Definición

Inicia una operación de lectura asincrónica. (Considere la posibilidad de usar ReadAsync(Byte[], Int32, Int32) en su lugar).

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);
public virtual IAsyncResult BeginRead(byte[] buffer, int offset, int count, AsyncCallback callback, 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

Parámetros

buffer
Byte[]

Búfer en el que se van a leer los datos.

offset
Int32

Desplazamiento de bytes en el buffer que se van a empezar a escribir datos leídos desde la secuencia.

count
Int32

Número máximo de bytes que se van a leer.

callback
AsyncCallback

Se llamará a una devolución de llamada asincrónica opcional cuando se complete la lectura.

state
Object

Objeto proporcionado por el usuario que distingue esta solicitud de lectura asincrónica determinada de otras solicitudes.

Devoluciones

que IAsyncResult representa la lectura asincrónica, que todavía podría estar pendiente.

Excepciones

Se ha intentado una lectura asincrónica más allá del final de la secuencia o se produce un error de disco.

Uno o varios argumentos no son válidos.

Se llamó a los métodos después de cerrar la secuencia.

La implementación actual Stream no admite la operación de lectura.

Comentarios

En .NET Framework 4 y versiones anteriores, tiene que usar métodos como BeginRead e EndRead implementar operaciones asincrónicas de E/S. Estos métodos siguen estando disponibles en .NET Framework 4.5 para admitir código heredado; sin embargo, los nuevos métodos asincrónicos, como ReadAsync, WriteAsync, CopyToAsyncy FlushAsync, le ayudan a implementar operaciones asincrónicas de E/S más fácilmente.

La implementación predeterminada de BeginRead en una secuencia llama al Read método de forma sincrónica, lo que significa que Read podría bloquearse en algunas secuencias. Sin embargo, las instancias de clases como FileStream y NetworkStream admiten totalmente operaciones asincrónicas si las instancias se han abierto de forma asincrónica. Por lo tanto, las llamadas a BeginRead no se bloquearán en esas secuencias. Puede invalidar BeginRead (mediante delegados asincrónicos, por ejemplo) para proporcionar un comportamiento asincrónico.

Pase el IAsyncResult valor devuelto al EndRead método de la secuencia para determinar cuántos bytes se leyeron y liberar los recursos del sistema operativo usados para leer. EndRead se debe llamar una vez para cada llamada a BeginRead. Puede hacerlo mediante el mismo código que llamó BeginRead o en una devolución de llamada pasada a BeginRead.

La posición actual de la secuencia se actualiza cuando se emite la lectura o escritura asincrónica, no cuando se completa la operación de E/S.

Varias solicitudes asincrónicas simultáneas representan el orden de finalización de la solicitud incierta.

Use la CanRead propiedad para determinar si la instancia actual admite la lectura.

Si se cierra una secuencia o se pasa un argumento no válido, las excepciones se inician inmediatamente desde BeginRead. Los errores que se producen durante una solicitud de lectura asincrónica, como un error de disco durante la solicitud de E/S, se producen en el subproceso del grupo de subprocesos y producen excepciones al llamar a EndRead.

Se aplica a

Consulte también