Partilhar via


Stream.CopyToAsync Método

Definição

Lê de forma assíncrona os bytes do fluxo atual e os grava em outro fluxo. Ambas as posições de fluxos são avançadas pelo número de bytes copiados.

Sobrecargas

CopyToAsync(Stream, Int32, CancellationToken)

Lê de forma assíncrona os bytes do fluxo atual e os grava em outro fluxo usando um tamanho do buffer especificado e um token de cancelamento. Ambas as posições de fluxos são avançadas pelo número de bytes copiados.

CopyToAsync(Stream, CancellationToken)

Lê de forma assíncrona os bytes do fluxo atual e os grava em outro fluxo usando um token de cancelamento especificado. Ambas as posições de fluxos são avançadas pelo número de bytes copiados.

CopyToAsync(Stream)

Lê de forma assíncrona os bytes do fluxo atual e os grava em outro fluxo. Ambas as posições de fluxos são avançadas pelo número de bytes copiados.

CopyToAsync(Stream, Int32)

Lê de maneira assíncrona os bytes do fluxo atual e os grava em outro fluxo usando um tamanho do buffer especificado. Ambas as posições de fluxos são avançadas pelo número de bytes copiados.

CopyToAsync(Stream, Int32, CancellationToken)

Origem:
Stream.cs
Origem:
Stream.cs
Origem:
Stream.cs

Lê de forma assíncrona os bytes do fluxo atual e os grava em outro fluxo usando um tamanho do buffer especificado e um token de cancelamento. Ambas as posições de fluxos são avançadas pelo 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

O fluxo para o qual o conteúdo do fluxo atual será copiado.

bufferSize
Int32

O tamanho do buffer, em bytes. Esse valor deve ser maior que zero. O tamanho padrão é 81.920.

cancellationToken
CancellationToken

O token a se monitorar para solicitações de cancelamento. O valor padrão é None.

Retornos

Uma tarefa que representa a operação de cópia assíncrona.

Atributos

Exceções

destination é null.

buffersize é negativo ou zero.

O fluxo atual ou o fluxo de destino é descartado.

O fluxo atual não dá suporte à leitura ou o fluxo de destino não dá suporte à gravação.

O token de cancelamento foi cancelado. Essa exceção é armazenada na tarefa retornada.

Comentários

O CopyToAsync método permite que você execute operações de E/S com uso intensivo de recursos sem bloquear o thread de main. Essa consideração sobre o desempenho é particularmente importante em um aplicativo da Microsoft Store 8.x ou aplicativo de desktop em que uma operação demorada de fluxo pode bloquear o thread de interface do usuário e fazer seu aplicativo parecer como se não estivesse funcionando. Os métodos assíncronos são usados em conjunto com as async palavras-chave e await no Visual Basic e C#.

Se a operação for cancelada antes de ser concluída, a tarefa retornada conterá o Canceled valor da Status propriedade .

A cópia começa na posição atual no fluxo atual.

Para obter um exemplo de cópia entre dois fluxos, consulte a CopyToAsync(Stream) sobrecarga.

Esse método armazena na tarefa que retorna todas as exceções de não uso que a contraparte síncrona do método pode gerar. Se uma exceção for armazenada na tarefa retornada, essa exceção será gerada quando a tarefa for aguardada. Exceções de uso, como ArgumentException, ainda são geradas de forma síncrona. Para as exceções armazenadas, consulte as exceções geradas por CopyTo(Stream, Int32).

Aplica-se a

CopyToAsync(Stream, CancellationToken)

Origem:
Stream.cs
Origem:
Stream.cs
Origem:
Stream.cs

Lê de forma assíncrona os bytes do fluxo atual e os grava em outro fluxo usando um token de cancelamento especificado. Ambas as posições de fluxos são avançadas pelo 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

O fluxo para o qual o conteúdo do fluxo atual será copiado.

cancellationToken
CancellationToken

O token a se monitorar para solicitações de cancelamento. O valor padrão é None.

Retornos

Uma tarefa que representa a operação de cópia assíncrona.

Exceções

O token de cancelamento foi cancelado. Essa exceção é armazenada na tarefa retornada.

Comentários

O CopyToAsync método permite que você execute operações de E/S com uso intensivo de recursos sem bloquear o thread de main. Essa consideração sobre o desempenho é particularmente importante em um aplicativo da Microsoft Store 8.x ou aplicativo de desktop em que uma operação demorada de fluxo pode bloquear o thread de interface do usuário e fazer seu aplicativo parecer como se não estivesse funcionando. Os métodos assíncronos são usados em conjunto com as async palavras-chave e await no Visual Basic e C#.

Se a operação for cancelada antes de ser concluída, a tarefa retornada conterá o Canceled valor da Status propriedade .

A cópia começa na posição atual no fluxo atual.

Para obter um exemplo de cópia entre dois fluxos, consulte a CopyToAsync(Stream) sobrecarga.

Esse método armazena na tarefa que retorna todas as exceções de não uso que a contraparte síncrona do método pode gerar. Se uma exceção for armazenada na tarefa retornada, essa exceção será gerada quando a tarefa for aguardada. Exceções de uso, como ArgumentException, ainda são geradas de forma síncrona. Para as exceções armazenadas, consulte as exceções geradas por CopyTo(Stream).

Aplica-se a

CopyToAsync(Stream)

Origem:
Stream.cs
Origem:
Stream.cs
Origem:
Stream.cs

Lê de forma assíncrona os bytes do fluxo atual e os grava em outro fluxo. Ambas as posições de fluxos são avançadas pelo 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

O fluxo para o qual o conteúdo do fluxo atual será copiado.

Retornos

Uma tarefa que representa a operação de cópia assíncrona.

Atributos

Exceções

destination é null.

O fluxo atual ou o fluxo de destino é descartado.

O fluxo atual não dá suporte à leitura ou o fluxo de destino não dá suporte à gravação.

Exemplos

O exemplo a seguir demonstra como usar dois FileStream objetos para copiar de forma assíncrona os arquivos de um diretório para outro. A classe FileStream é derivada da classe Stream. Observe que o Click manipulador de eventos para o Button controle está marcado com o async modificador porque ele chama um método assíncrono

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

Comentários

O CopyToAsync método permite que você execute operações de E/S com uso intensivo de recursos sem bloquear o thread de main. Essa consideração sobre o desempenho é particularmente importante em um aplicativo da Microsoft Store 8.x ou aplicativo de desktop em que uma operação demorada de fluxo pode bloquear o thread de interface do usuário e fazer seu aplicativo parecer como se não estivesse funcionando. Os métodos assíncronos são usados em conjunto com as async palavras-chave e await no Visual Basic e C#.

A cópia começa na posição atual no fluxo atual.

Esse método armazena na tarefa que retorna todas as exceções de não uso que a contraparte síncrona do método pode gerar. Se uma exceção for armazenada na tarefa retornada, essa exceção será gerada quando a tarefa for aguardada. Exceções de uso, como ArgumentException, ainda são geradas de forma síncrona. Para as exceções armazenadas, consulte as exceções geradas por CopyTo(Stream).

Aplica-se a

CopyToAsync(Stream, Int32)

Origem:
Stream.cs
Origem:
Stream.cs
Origem:
Stream.cs

Lê de maneira assíncrona os bytes do fluxo atual e os grava em outro fluxo usando um tamanho do buffer especificado. Ambas as posições de fluxos são avançadas pelo 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

O fluxo para o qual o conteúdo do fluxo atual será copiado.

bufferSize
Int32

O tamanho do buffer, em bytes. Esse valor deve ser maior que zero. O tamanho padrão é 81.920.

Retornos

Uma tarefa que representa a operação de cópia assíncrona.

Atributos

Exceções

destination é null.

buffersize é negativo ou zero.

O fluxo atual ou o fluxo de destino é descartado.

O fluxo atual não dá suporte à leitura ou o fluxo de destino não dá suporte à gravação.

Comentários

O CopyToAsync método permite que você execute operações de E/S com uso intensivo de recursos sem bloquear o thread de main. Essa consideração sobre o desempenho é particularmente importante em um aplicativo da Microsoft Store 8.x ou aplicativo de desktop em que uma operação demorada de fluxo pode bloquear o thread de interface do usuário e fazer seu aplicativo parecer como se não estivesse funcionando. Os métodos assíncronos são usados em conjunto com as async palavras-chave e await no Visual Basic e C#.

A cópia começa na posição atual no fluxo atual.

Para obter um exemplo de cópia entre dois fluxos, consulte a CopyToAsync(Stream) sobrecarga.

Esse método armazena na tarefa que retorna todas as exceções de não uso que a contraparte síncrona do método pode gerar. Se uma exceção for armazenada na tarefa retornada, essa exceção será gerada quando a tarefa for aguardada. Exceções de uso, como ArgumentException, ainda são geradas de forma síncrona. Para as exceções armazenadas, consulte as exceções geradas por CopyTo(Stream, Int32).

Aplica-se a