Aplicaciones de Windows
Collapse the table of content
Expand the table of content
Este artículo se tradujo automáticamente. Para ver el artículo en inglés, active la casilla Inglés. Además, puede mostrar el texto en inglés en una ventana emergente si mueve el puntero del mouse sobre el texto.
Traducción
Inglés
Información
El tema que ha solicitado se muestra abajo. Sin embargo, este tema no se encuentra en la biblioteca.

Método Stream.ReadAsync (Byte[], Int32, Int32)

.NET Framework (current version)
 

Publicado: octubre de 2016

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.

Espacio de nombres:   System.IO
Ensamblado:  mscorlib (en mscorlib.dll)

[ComVisibleAttribute(false)]
[HostProtectionAttribute(SecurityAction.LinkDemand, ExternalThreading = true)]
public Task<int> ReadAsync(
	byte[] buffer,
	int offset,
	int count
)

Parámetros

buffer
Type: System.Byte[]

Búfer en el que se escriben los datos.

offset
Type: System.Int32

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

count
Type: System.Int32

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

Valor devuelto

Type: System.Threading.Tasks.Task<Int32>

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 del resultado puede ser menor que el número de bytes solicitados si el número de bytes disponibles actualmente es menor que el número solicitado o puede ser 0 (cero) si se ha llegado al final de la secuencia.

Exception Condition
ArgumentNullException

El valor de buffer es null.

ArgumentOutOfRangeException

offset o count es negativo.

ArgumentException

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

NotSupportedException

La secuencia no admite lectura.

ObjectDisposedException

Se ha eliminado la secuencia.

InvalidOperationException

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

El ReadAsync método le permite realizar operaciones de E/S de gran cantidad de 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 utilizan junto con el async y await palabras clave en Visual Basic y C#.

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

En el ejemplo siguiente se muestra cómo leer de un archivo de forma asincrónica. El ejemplo utiliza 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);
        }
    }
}

Plataforma universal de Windows
Disponible desde 8
.NET Framework
Disponible desde 4.5
Biblioteca de clases portable
Se admite en: plataformas portátiles de .NET
Windows Phone Silverlight
Disponible desde 8.0
Windows Phone
Disponible desde 8.1
Volver al principio
Mostrar:
© 2017 Microsoft