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

Método Stream.CopyToAsync (Stream)

.NET Framework (current version)
 

Publicado: noviembre de 2016

Lee asincrónicamente los bytes de la secuencia actual y los escribe en otra secuencia.

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

[ComVisibleAttribute(false)]
[HostProtectionAttribute(SecurityAction.LinkDemand, ExternalThreading = true)]
public Task CopyToAsync(
	Stream destination
)

Parámetros

destination
Type: System.IO.Stream

Secuencia en la que se copiará el contenido de la secuencia actual.

Valor devuelto

Type: System.Threading.Tasks.Task

Tarea que representa la operación de copia asincrónica.

Exception Condition
ArgumentNullException

El valor de destination es null.

ObjectDisposedException

Se ha eliminado la secuencia actual o la secuencia de destino.

NotSupportedException

La secuencia actual admite lectura o la secuencia de destino no admite la escritura.

El CopyToAsync 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#.

La copia empieza en la posición actual en la secuencia actual.

En el ejemplo siguiente se muestra cómo utilizar dos FileStream objetos para copiar los archivos de forma asincrónica desde un directorio a otro. La clase FileStream se deriva de la clase Stream. Observe que el Click controlador de eventos para el Button control está marcado con el async modificador porque llama a un método asincrónico

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

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

        private async void Button_Click(object sender, RoutedEventArgs e)
        {
            string StartDirectory = @"c:\Users\exampleuser\start";
            string EndDirectory = @"c:\Users\exampleuser\end";

            foreach (string filename in Directory.EnumerateFiles(StartDirectory))
            {
                using (FileStream SourceStream = File.Open(filename, FileMode.Open))
                {
                    using (FileStream DestinationStream = File.Create(EndDirectory + filename.Substring(filename.LastIndexOf('\\'))))
                    {
                        await SourceStream.CopyToAsync(DestinationStream);
                    }
                }
            }
        }
    }
}

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: