Questo articolo è stato tradotto automaticamente. Per visualizzare l'articolo in inglese, selezionare la casella di controllo Inglese. È possibile anche visualizzare il testo inglese in una finestra popup posizionando il puntatore del mouse sopra il testo.
Traduzione
Inglese

Metodo Stream.CopyToAsync (Stream)

.NET Framework (current version)
 

Data di pubblicazione: novembre 2016

Legge in modo asincrono i byte dal flusso corrente e li scrive in un altro flusso.

Spazio dei nomi:   System.IO
Assembly:  mscorlib (in mscorlib.dll)

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

Parametri

destination
Type: System.IO.Stream

Flusso in cui verrà copiato il contenuto del flusso corrente.

Valore restituito

Type: System.Threading.Tasks.Task

Attività che rappresenta l'operazione di copia asincrona.

Exception Condition
ArgumentNullException

destination è null.

ObjectDisposedException

Il flusso di destinazione o nel flusso corrente è stato eliminato.

NotSupportedException

Il flusso corrente supporta la lettura o il flusso di destinazione non supporta la scrittura.

Il CopyToAsync metodo consente di eseguire operazioni dei / o di risorse senza bloccare il thread principale. Questa considerazione sulle prestazioni è particolarmente importante in un'applicazione Windows 8.x Store o desktop in cui tramite un'operazione di flusso per cui è richiesto molto tempo è possibile bloccare il thread UI e far sembrare che l'applicazione non funzioni. I metodi asincroni vengono utilizzati in combinazione con il async e await le parole chiave in Visual Basic e c#.

Inizia la copia nella posizione corrente nel flusso corrente.

Nell'esempio seguente viene illustrato come utilizzare due FileStream oggetti da copiare in modo asincrono i file da una directory a un altro. La classe FileStream deriva dalla classe Stream. Si noti che il Click gestore eventi per il Button controllo viene contrassegnato con il async modificatore perché chiama un metodo asincrono

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);
                    }
                }
            }
        }
    }
}

Universal Windows Platform
Disponibile da 8
.NET Framework
Disponibile da 4.5
Libreria di classi portabile
Supportato in: piattaforme .NET portabili
Windows Phone Silverlight
Disponibile da 8.0
Windows Phone
Disponibile da 8.1
Torna all'inizio
Mostra: