Stream.ReadAsync Método

Definición

Lee asincrónicamente una secuencia de bytes de la secuencia actual y avanza la posición en esta secuencia según el número de bytes leídos.

Sobrecargas

ReadAsync(Memory<Byte>, CancellationToken)

Lee de forma asincrónica una secuencia de bytes en la secuencia actual, se hace avanzar la posición dentro de la secuencia el número de bytes leídos y controla las solicitudes de cancelación.

ReadAsync(Byte[], Int32, Int32)

Lee asincrónicamente una secuencia de bytes de la secuencia actual y avanza la posición en esta secuencia según el número de bytes leídos.

ReadAsync(Byte[], Int32, Int32, CancellationToken)

Lee de forma asincrónica una secuencia de bytes en la secuencia actual, se hace avanzar la posición dentro de la secuencia el número de bytes leídos y controla las solicitudes de cancelación.

ReadAsync(Memory<Byte>, CancellationToken)

Lee de forma asincrónica una secuencia de bytes en la secuencia actual, se hace avanzar la posición dentro de la secuencia el número de bytes leídos y controla las solicitudes de cancelación.

public virtual System.Threading.Tasks.ValueTask<int> ReadAsync (Memory<byte> buffer, System.Threading.CancellationToken cancellationToken = default);
abstract member ReadAsync : Memory<byte> * System.Threading.CancellationToken -> System.Threading.Tasks.ValueTask<int>
override this.ReadAsync : Memory<byte> * System.Threading.CancellationToken -> System.Threading.Tasks.ValueTask<int>
Public Overridable Function ReadAsync (buffer As Memory(Of Byte), Optional cancellationToken As CancellationToken = Nothing) As ValueTask(Of Integer)

Parámetros

buffer
Memory<Byte>

Región de memoria en la que se van a escribir los datos.

cancellationToken
CancellationToken

Token para supervisar solicitudes de cancelación. El valor predeterminado es None.

Devoluciones

Tarea que representa la operación de lectura asincrónica. El valor de su propiedad Result contiene el número total de bytes leídos en el búfer. El valor de resultado puede ser menor que la longitud del búfer si no hay muchos bytes disponibles actualmente, o puede ser 0 (cero) si la longitud del búfer es 0 o si se ha alcanzado el final de la secuencia.

Excepciones

Se canceló el token de cancelación. Esta excepción se almacena en la tarea devuelta.

Comentarios

El ReadAsync método permite realizar operaciones de E/S intensivas en recursos sin bloquear el subproceso principal. Esta consideración de rendimiento es especialmente importante en una aplicación de la Tienda Windows 8.x o una aplicación de escritorio en que una operación de streaming prolongada puede bloquear el subproceso de interfaz de usuario y hacer que parezca que una aplicación ha dejado de responder. Los métodos asincrónicos se usan junto con las async palabras clave y await en Visual Basic y C#.

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

Si la operación se cancela antes de completarse, la tarea devuelta contiene el TaskStatus.Canceled valor de la Status propiedad .

Para obtener un ejemplo, consulte la ReadAsync(Byte[], Int32, Int32) sobrecarga.

Se aplica a

ReadAsync(Byte[], Int32, Int32)

Lee asincrónicamente una secuencia de bytes de la secuencia actual y avanza la posición en esta secuencia según el número de bytes leídos.

public:
 System::Threading::Tasks::Task<int> ^ ReadAsync(cli::array <System::Byte> ^ buffer, int offset, int count);
public System.Threading.Tasks.Task<int> ReadAsync (byte[] buffer, int offset, int count);
[System.Runtime.InteropServices.ComVisible(false)]
public System.Threading.Tasks.Task<int> ReadAsync (byte[] buffer, int offset, int count);
member this.ReadAsync : byte[] * int * int -> System.Threading.Tasks.Task<int>
[<System.Runtime.InteropServices.ComVisible(false)>]
member this.ReadAsync : byte[] * int * int -> System.Threading.Tasks.Task<int>
Public Function ReadAsync (buffer As Byte(), offset As Integer, count As Integer) As Task(Of Integer)

Parámetros

buffer
Byte[]

El búfer en el que se escriben los datos.

offset
Int32

Posición de desplazamiento en bytes de buffer donde se comienza a escribir los datos de la secuencia.

count
Int32

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

Devoluciones

Tarea que representa la operación de lectura asincrónica. El valor del parámetro TResult contiene el número total de bytes leídos en el búfer. El valor de resultado puede ser menor que el número de bytes solicitado si el número de bytes disponible actualmente es menor que el número solicitado, o puede ser 0 (cero) si count es 0 o si se ha alcanzado el final de la secuencia.

Atributos

Excepciones

buffer es null.

offset o count es negativo.

La suma de offset y count es mayor que la longitud del búfer.

La secuencia no admite lectura.

Se ha eliminado la secuencia.

Una operación de lectura anterior está usando actualmente la secuencia.

Ejemplos

En el ejemplo siguiente se muestra cómo leer de un archivo de forma asincrónica. En el ejemplo se usa la FileStream clase , que se deriva de la Stream clase .

using System;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.IO;

namespace WpfApplication1
{
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }

        private async void Button_Click(object sender, RoutedEventArgs e)
        {
            string filename = @"c:\Temp\userinputlog.txt";
            byte[] result;

            using (FileStream SourceStream = File.Open(filename, FileMode.Open))
            {
                result = new byte[SourceStream.Length];
                await SourceStream.ReadAsync(result, 0, (int)SourceStream.Length);
            }

            UserInput.Text = System.Text.Encoding.ASCII.GetString(result);
        }
    }
}
Imports System.IO
Imports System.Text

Class MainWindow
    Private Async Sub Button_Click(sender As Object, e As RoutedEventArgs)
        Dim filename As String = "c:\Temp\userinputlog.txt"

        Dim result As Byte()

        Using SourceStream As FileStream = File.Open(filename, FileMode.Open)
            result = New Byte(SourceStream.Length - 1) {}
            Await SourceStream.ReadAsync(result, 0, CType(SourceStream.Length, Integer))
        End Using

        UserInput.Text = System.Text.Encoding.ASCII.GetString(result)
    End Sub
End Class

Comentarios

El ReadAsync método permite realizar operaciones de E/S intensivas en recursos sin bloquear el subproceso principal. Esta consideración de rendimiento es especialmente importante en una aplicación de la Tienda Windows 8.x o una aplicación de escritorio en que una operación de streaming prolongada puede bloquear el subproceso de interfaz de usuario y hacer que parezca que una aplicación ha dejado de responder. Los métodos asincrónicos se usan junto con las async palabras clave y await en Visual Basic y C#.

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

Este método almacena en la tarea que devuelve todas las excepciones que no son de uso que puede producir el homólogo sincrónico del método. Si se almacena una excepción en la tarea devuelta, esa excepción se producirá cuando se espere a la tarea. Las excepciones de uso, como ArgumentException, se siguen produciendo de forma sincrónica. Para ver las excepciones almacenadas, vea las excepciones producidas por Read(Byte[], Int32, Int32).

Se aplica a

ReadAsync(Byte[], Int32, Int32, CancellationToken)

Lee de forma asincrónica una secuencia de bytes en la secuencia actual, se hace avanzar la posición dentro de la secuencia el número de bytes leídos y controla las solicitudes de cancelación.

public:
 virtual System::Threading::Tasks::Task<int> ^ ReadAsync(cli::array <System::Byte> ^ buffer, int offset, int count, System::Threading::CancellationToken cancellationToken);
public virtual System.Threading.Tasks.Task<int> ReadAsync (byte[] buffer, int offset, int count, System.Threading.CancellationToken cancellationToken);
[System.Runtime.InteropServices.ComVisible(false)]
public virtual System.Threading.Tasks.Task<int> ReadAsync (byte[] buffer, int offset, int count, System.Threading.CancellationToken cancellationToken);
abstract member ReadAsync : byte[] * int * int * System.Threading.CancellationToken -> System.Threading.Tasks.Task<int>
override this.ReadAsync : byte[] * int * int * System.Threading.CancellationToken -> System.Threading.Tasks.Task<int>
[<System.Runtime.InteropServices.ComVisible(false)>]
abstract member ReadAsync : byte[] * int * int * System.Threading.CancellationToken -> System.Threading.Tasks.Task<int>
override this.ReadAsync : byte[] * int * int * System.Threading.CancellationToken -> System.Threading.Tasks.Task<int>
Public Overridable Function ReadAsync (buffer As Byte(), offset As Integer, count As Integer, cancellationToken As CancellationToken) As Task(Of Integer)

Parámetros

buffer
Byte[]

El búfer en el que se escriben los datos.

offset
Int32

Posición de desplazamiento en bytes de buffer donde se comienza a escribir los datos de la secuencia.

count
Int32

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

cancellationToken
CancellationToken

Token para supervisar solicitudes de cancelación. El valor predeterminado es None.

Devoluciones

Tarea que representa la operación de lectura asincrónica. El valor del parámetro TResult contiene el número total de bytes leídos en el búfer. El valor de resultado puede ser menor que el número de bytes solicitado si el número de bytes disponible actualmente es menor que el número solicitado, o puede ser 0 (cero) si count es 0 o si se ha alcanzado el final de la secuencia.

Atributos

Excepciones

buffer es null.

offset o count es negativo.

La suma de offset y count es mayor que la longitud del búfer.

La secuencia no admite lectura.

Se ha eliminado la secuencia.

Una operación de lectura anterior está usando actualmente la secuencia.

Se canceló el token de cancelación. Esta excepción se almacena en la tarea devuelta.

Comentarios

El ReadAsync método permite realizar operaciones de E/S intensivas en recursos sin bloquear el subproceso principal. Esta consideración de rendimiento es especialmente importante en una aplicación de la Tienda Windows 8.x o una aplicación de escritorio en que una operación de streaming prolongada puede bloquear el subproceso de interfaz de usuario y hacer que parezca que una aplicación ha dejado de responder. Los métodos asincrónicos se usan junto con las async palabras clave y await en Visual Basic y C#.

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

Si la operación se cancela antes de completarse, la tarea devuelta contiene el Canceled valor de la Status propiedad .

Para obtener un ejemplo, consulte la ReadAsync(Byte[], Int32, Int32) sobrecarga.

Este método almacena en la tarea que devuelve todas las excepciones que no son de uso que puede producir el homólogo sincrónico del método. Si se almacena una excepción en la tarea devuelta, esa excepción se producirá cuando se espere a la tarea. Las excepciones de uso, como ArgumentException, se siguen produciendo de forma sincrónica. Para ver las excepciones almacenadas, vea las excepciones producidas por Read(Byte[], Int32, Int32).

Consulte también

Se aplica a