Dieser Artikel wurde maschinell übersetzt. Wenn Sie die englische Version des Artikels anzeigen möchten, aktivieren Sie das Kontrollkästchen Englisch. Sie können den englischen Text auch in einem Popupfenster anzeigen, indem Sie den Mauszeiger über den Text bewegen.
Übersetzung
Englisch

Stream.CopyToAsync-Methode: (Stream)

.NET Framework (current version)
 

Veröffentlicht: Oktober 2016

Liest die Bytes asynchron aus dem aktuellen Stream und schreibt sie in einen anderen Stream.

Namespace:   System.IO
Assembly:  mscorlib (in mscorlib.dll)

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

Parameter

destination
Type: System.IO.Stream

Der Stream, in den der Inhalt des aktuellen Stream kopiert wird.

Rückgabewert

Type: System.Threading.Tasks.Task

Eine Aufgabe, die den asynchronen Kopiervorgang darstellt.

Exception Condition
ArgumentNullException

destination ist null.

ObjectDisposedException

Der aktuelle Stream oder Zieldatenstrom wird verworfen.

NotSupportedException

Der aktuelle Stream unterstützt keine Lesevorgänge oder der Zielstream unterstützt keine Schreibvorgänge.

Die CopyToAsync -Methode können Sie ressourcenintensive e/a-Vorgänge ausführen, ohne den Hauptthread zu blockieren. Diese Überlegungen zur Leistung sind insbesondere in einer Windows 8.x Store-App oder Desktop-App wichtig, bei der ein zeitaufwendiger Streamvorgang den UI-Thread blockieren kann und es dann den Anschein hat, dass Ihre App nicht funktioniert. Die asynchronen Methoden wird in Verbindung mit der async und await in Visual Basic und C#-Schlüsselwörter.

Das Kopieren beginnt an der aktuellen Position im aktuellen Stream.

Im folgenden Beispiel wird veranschaulicht, wie zwei FileStream -Objekten Dateien asynchron aus einem Verzeichnis in ein anderes kopiert. Die FileStream-Klasse wird aus der Stream-Klasse abgeleitet. Beachten Sie, dass die Click -Ereignishandler für das Button Steuerelement markiert ist, mit der async Modifizierer, da es sich um eine asynchrone Methode aufruft

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

Universelle Windows-Plattform
Verfügbar seit 8
.NET Framework
Verfügbar seit 4.5
Portierbare Klassenbibliothek
Unterstützt in: portierbare .NET-Plattformen
Windows Phone Silverlight
Verfügbar seit 8.0
Windows Phone
Verfügbar seit 8.1
Zurück zum Anfang
Anzeigen: