Exportar (0) Imprimir
Expandir todo
Este artículo proviene de un motor de traducción automática. Mueva el puntero sobre las frases del artículo para ver el texto original. Más información.
Traducción
Original

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

.NET Framework 4.5

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.

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

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

Parámetros

buffer
Tipo: System.Byte[]
El búfer en el que se escriben los datos.
offset
Tipo: System.Int32
Posición de desplazamiento en bytes de buffer donde se comienza a escribir los datos de la secuencia.
count
Tipo: System.Int32
Número máximo de bytes que se pueden leer.
cancellationToken
Tipo: System.Threading.CancellationToken
Token para supervisar solicitudes de cancelación.

Valor devuelto

Tipo: 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.

ExcepciónCondición
ArgumentNullException

buffer es null.

ArgumentOutOfRangeException

offset o count son 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

La secuencia está actualmente en uso por una operación de lectura anterior.

El método de ReadAsync permite realizar operaciones de archivo recurso- intensivas sin bloquear el subproceso principal. Esta consideración de rendimiento es especialmente importante en una aplicación de Tienda Windows o la aplicación de escritorio donde una operación larga de la secuencia puede bloquear el subproceso de la interfaz de usuario y crear que aparece la aplicación como si no funciona. Los métodos async se utilizan junto con las palabras clave de async y de await en Visual Basic y C#.

Se utiliza la propiedad CanRead para determinar si la instancia actual admite operaciones de lectura.

Si se cancela la operación antes de que se complete, la tarea devuelta contiene el valor de Canceled para la propiedad de Status . Si el identificador del archivo se elimina, la tarea devuelta contiene la excepción de ObjectDisposedException en la propiedad de Exception .

NotaNota

El atributo HostProtectionAttribute aplicado a este tipo o miembro tiene el valor de propiedad Resources siguiente: ExternalThreading. El atributo HostProtectionAttribute no afecta a las aplicaciones de escritorio (que normalmente se inician haciendo doble clic en un icono, escribiendo un comando o introduciendo una dirección URL en el explorador). Para obtener más información, vea la clase HostProtectionAttribute o Programación en SQL Server y atributos de protección de host.

El ejemplo siguiente muestra cómo leer de un archivo de forma asincrónica.


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)
        {
            UnicodeEncoding uniencoding = new UnicodeEncoding();
            string filename = @"c:\Users\exampleuser\Documents\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 = uniencoding.GetString(result);
        }
    }
}


.NET Framework

Compatible con: 4.5

Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (no se admite el rol Server Core), Windows Server 2008 R2 (se admite el rol Server Core con SP1 o versiones posteriores; no se admite Itanium)

.NET Framework no admite todas las versiones de todas las plataformas. Para obtener una lista de las versiones compatibles, vea Requisitos de sistema de .NET Framework.

Adiciones de comunidad

AGREGAR
Mostrar:
© 2014 Microsoft