Compartir a través de


Stream.CopyToAsync Método

Definición

Lee asincrónicamente los bytes de la secuencia actual y los escribe en otra secuencia. Ambas posiciones de secuencias están avanzadas por el número de bytes copiados.

Sobrecargas

CopyToAsync(Stream, Int32, CancellationToken)

Lee asincrónicamente los bytes de la secuencia actual y los escribe en otra secuencia, utilizando el tamaño de búfer y el token de cancelación especificados. Ambas posiciones de secuencias están avanzadas por el número de bytes copiados.

CopyToAsync(Stream, CancellationToken)

Lee de forma asincrónica los bytes de la secuencia actual y los escribe en otra secuencia mediante un token de cancelación especificado. Ambas posiciones de secuencias están avanzadas por el número de bytes copiados.

CopyToAsync(Stream)

Lee asincrónicamente los bytes de la secuencia actual y los escribe en otra secuencia. Ambas posiciones de secuencias están avanzadas por el número de bytes copiados.

CopyToAsync(Stream, Int32)

Lee asincrónicamente los bytes de la secuencia actual y los escribe en otra secuencia, usando el tamaño de búfer especificado. Ambas posiciones de secuencias están avanzadas por el número de bytes copiados.

CopyToAsync(Stream, Int32, CancellationToken)

Source:
Stream.cs
Source:
Stream.cs
Source:
Stream.cs

Lee asincrónicamente los bytes de la secuencia actual y los escribe en otra secuencia, utilizando el tamaño de búfer y el token de cancelación especificados. Ambas posiciones de secuencias están avanzadas por el número de bytes copiados.

public:
 virtual System::Threading::Tasks::Task ^ CopyToAsync(System::IO::Stream ^ destination, int bufferSize, System::Threading::CancellationToken cancellationToken);
public virtual System.Threading.Tasks.Task CopyToAsync (System.IO.Stream destination, int bufferSize, System.Threading.CancellationToken cancellationToken);
[System.Runtime.InteropServices.ComVisible(false)]
public virtual System.Threading.Tasks.Task CopyToAsync (System.IO.Stream destination, int bufferSize, System.Threading.CancellationToken cancellationToken);
abstract member CopyToAsync : System.IO.Stream * int * System.Threading.CancellationToken -> System.Threading.Tasks.Task
override this.CopyToAsync : System.IO.Stream * int * System.Threading.CancellationToken -> System.Threading.Tasks.Task
[<System.Runtime.InteropServices.ComVisible(false)>]
abstract member CopyToAsync : System.IO.Stream * int * System.Threading.CancellationToken -> System.Threading.Tasks.Task
override this.CopyToAsync : System.IO.Stream * int * System.Threading.CancellationToken -> System.Threading.Tasks.Task
Public Overridable Function CopyToAsync (destination As Stream, bufferSize As Integer, cancellationToken As CancellationToken) As Task

Parámetros

destination
Stream

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

bufferSize
Int32

Tamaño del búfer en bytes. Este valor debe ser mayor que cero. El tamaño predeterminado es 81920.

cancellationToken
CancellationToken

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

Devoluciones

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

Atributos

Excepciones

destination es null.

buffersize es un valor negativo o es cero.

Se desecha la secuencia actual o la secuencia de destino.

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

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

Comentarios

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

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

La copia comienza en la posición actual de la secuencia actual.

Para obtener un ejemplo de copia entre dos secuencias, consulte la CopyToAsync(Stream) 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, se producirá esa excepción cuando se espere la tarea. Las excepciones de uso, como ArgumentException, se siguen iniciando de forma sincrónica. Para ver las excepciones almacenadas, consulte las excepciones producidas por CopyTo(Stream, Int32).

Se aplica a

CopyToAsync(Stream, CancellationToken)

Source:
Stream.cs
Source:
Stream.cs
Source:
Stream.cs

Lee de forma asincrónica los bytes de la secuencia actual y los escribe en otra secuencia mediante un token de cancelación especificado. Ambas posiciones de secuencias están avanzadas por el número de bytes copiados.

public:
 System::Threading::Tasks::Task ^ CopyToAsync(System::IO::Stream ^ destination, System::Threading::CancellationToken cancellationToken);
public System.Threading.Tasks.Task CopyToAsync (System.IO.Stream destination, System.Threading.CancellationToken cancellationToken);
member this.CopyToAsync : System.IO.Stream * System.Threading.CancellationToken -> System.Threading.Tasks.Task
Public Function CopyToAsync (destination As Stream, cancellationToken As CancellationToken) As Task

Parámetros

destination
Stream

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

cancellationToken
CancellationToken

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

Devoluciones

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

Excepciones

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

Comentarios

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

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

La copia comienza en la posición actual de la secuencia actual.

Para obtener un ejemplo de copia entre dos secuencias, consulte la CopyToAsync(Stream) 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, se producirá esa excepción cuando se espere la tarea. Las excepciones de uso, como ArgumentException, se siguen iniciando de forma sincrónica. Para ver las excepciones almacenadas, consulte las excepciones producidas por CopyTo(Stream).

Se aplica a

CopyToAsync(Stream)

Source:
Stream.cs
Source:
Stream.cs
Source:
Stream.cs

Lee asincrónicamente los bytes de la secuencia actual y los escribe en otra secuencia. Ambas posiciones de secuencias están avanzadas por el número de bytes copiados.

public:
 System::Threading::Tasks::Task ^ CopyToAsync(System::IO::Stream ^ destination);
public System.Threading.Tasks.Task CopyToAsync (System.IO.Stream destination);
[System.Runtime.InteropServices.ComVisible(false)]
public System.Threading.Tasks.Task CopyToAsync (System.IO.Stream destination);
member this.CopyToAsync : System.IO.Stream -> System.Threading.Tasks.Task
[<System.Runtime.InteropServices.ComVisible(false)>]
member this.CopyToAsync : System.IO.Stream -> System.Threading.Tasks.Task
Public Function CopyToAsync (destination As Stream) As Task

Parámetros

destination
Stream

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

Devoluciones

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

Atributos

Excepciones

destination es null.

Se desecha la secuencia actual o la secuencia de destino.

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

Ejemplos

En el ejemplo siguiente se muestra cómo usar dos FileStream objetos para copiar de forma asincrónica los archivos de un directorio a otro. La clase FileStream se deriva de la clase Stream . Observe que el Click controlador de eventos del Button control se marca 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);
                    }
                }
            }
        }
    }
}
Imports System.IO

Class MainWindow

    Private Async Sub Button_Click(sender As Object, e As RoutedEventArgs)
        Dim StartDirectory As String = "c:\Users\exampleuser\start"
        Dim EndDirectory As String = "c:\Users\exampleuser\end"

        For Each filename As String In Directory.EnumerateFiles(StartDirectory)
            Using SourceStream As FileStream = File.Open(filename, FileMode.Open)
                Using DestinationStream As FileStream = File.Create(EndDirectory + filename.Substring(filename.LastIndexOf("\"c)))
                    Await SourceStream.CopyToAsync(DestinationStream)
                End Using

            End Using
        Next
    End Sub

End Class

Comentarios

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

La copia comienza en la posición actual de la secuencia actual.

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, se producirá esa excepción cuando se espere la tarea. Las excepciones de uso, como ArgumentException, se siguen iniciando de forma sincrónica. Para ver las excepciones almacenadas, consulte las excepciones producidas por CopyTo(Stream).

Se aplica a

CopyToAsync(Stream, Int32)

Source:
Stream.cs
Source:
Stream.cs
Source:
Stream.cs

Lee asincrónicamente los bytes de la secuencia actual y los escribe en otra secuencia, usando el tamaño de búfer especificado. Ambas posiciones de secuencias están avanzadas por el número de bytes copiados.

public:
 System::Threading::Tasks::Task ^ CopyToAsync(System::IO::Stream ^ destination, int bufferSize);
public System.Threading.Tasks.Task CopyToAsync (System.IO.Stream destination, int bufferSize);
[System.Runtime.InteropServices.ComVisible(false)]
public System.Threading.Tasks.Task CopyToAsync (System.IO.Stream destination, int bufferSize);
member this.CopyToAsync : System.IO.Stream * int -> System.Threading.Tasks.Task
[<System.Runtime.InteropServices.ComVisible(false)>]
member this.CopyToAsync : System.IO.Stream * int -> System.Threading.Tasks.Task
Public Function CopyToAsync (destination As Stream, bufferSize As Integer) As Task

Parámetros

destination
Stream

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

bufferSize
Int32

Tamaño del búfer en bytes. Este valor debe ser mayor que cero. El tamaño predeterminado es 81920.

Devoluciones

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

Atributos

Excepciones

destination es null.

buffersize es un valor negativo o es cero.

Se desecha la secuencia actual o la secuencia de destino.

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

Comentarios

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

La copia comienza en la posición actual de la secuencia actual.

Para obtener un ejemplo de copia entre dos secuencias, consulte la CopyToAsync(Stream) 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, se producirá esa excepción cuando se espere la tarea. Las excepciones de uso, como ArgumentException, se siguen iniciando de forma sincrónica. Para ver las excepciones almacenadas, consulte las excepciones producidas por CopyTo(Stream, Int32).

Se aplica a