Stream.CopyToAsync 方法

定义

从当前流中异步读取字节并将其写入到另一个流中。 这两个流位置都以复制的字节数为高级。

重载

CopyToAsync(Stream, Int32, CancellationToken)

使用指定的缓冲区大小和取消令牌,从当前流中异步读取字节并将其写入到另一个流中。 这两个流位置都按复制的字节数提前。

CopyToAsync(Stream, CancellationToken)

通过指定的取消令牌,从当前流中异步读取字节并将其写入到另一个流中。 这两个流位置都按复制的字节数提前。

CopyToAsync(Stream)

从当前流中异步读取字节并将其写入到另一个流中。 这两个流位置都按复制的字节数提前。

CopyToAsync(Stream, Int32)

使用指定的缓冲区大小,从当前流中异步读取字节并将其写入到另一流中。 这两个流位置都按复制的字节数提前。

CopyToAsync(Stream, Int32, CancellationToken)

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

使用指定的缓冲区大小和取消令牌,从当前流中异步读取字节并将其写入到另一个流中。 这两个流位置都按复制的字节数提前。

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

参数

destination
Stream

当前流的内容将复制到的流。

bufferSize
Int32

缓冲区的大小(以字节为单位)。 此值必须大于零。 默认大小为 81920。

cancellationToken
CancellationToken

要监视取消请求的标记。 默认值为 None

返回

表示异步复制操作的任务。

属性

例外

destinationnull

buffersize 为负数或零。

当前流或目标流已释放。

当前流不支持阅读,或目标流不支持写入。

取消令牌已取消。 此异常存储在返回的任务中。

注解

使用 CopyToAsync 方法可以执行资源密集型 I/O 操作,而不会阻止main线程。 在 Windows 8.x 应用商店应用或桌面应用中一个耗时的流操作可能阻塞 UI 线程并让应用看起来好像不工作时,这种性能的考虑就显得尤为重要了。 异步方法与 async Visual Basic 和 C# 中的 和 await 关键字结合使用。

如果在操作完成之前取消了操作,则返回的任务将包含 Canceled 属性的值 Status

复制从当前流中的当前位置开始。

有关在两个流之间复制的示例,请参阅 CopyToAsync(Stream) 重载。

此方法将存储在任务中,它返回该方法的同步对应项可能引发的所有非使用异常。 如果异常存储在返回的任务中,则在等待任务时将引发该异常。 使用异常(如 ArgumentException)仍会同步引发。 有关存储的异常,请参阅 引发的 CopyTo(Stream, Int32)异常。

适用于

CopyToAsync(Stream, CancellationToken)

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

通过指定的取消令牌,从当前流中异步读取字节并将其写入到另一个流中。 这两个流位置都按复制的字节数提前。

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

参数

destination
Stream

当前流的内容将复制到的流。

cancellationToken
CancellationToken

要监视取消请求的标记。 默认值为 None

返回

表示异步复制操作的任务。

例外

取消令牌已取消。 此异常存储在返回的任务中。

注解

使用 CopyToAsync 方法可以执行资源密集型 I/O 操作,而不会阻止main线程。 在 Windows 8.x 应用商店应用或桌面应用中一个耗时的流操作可能阻塞 UI 线程并让应用看起来好像不工作时,这种性能的考虑就显得尤为重要了。 异步方法与 async Visual Basic 和 C# 中的 和 await 关键字结合使用。

如果在操作完成之前取消了操作,则返回的任务将包含 Canceled 属性的值 Status

复制从当前流中的当前位置开始。

有关在两个流之间复制的示例,请参阅 CopyToAsync(Stream) 重载。

此方法将存储在任务中,它返回该方法的同步对应项可能引发的所有非使用异常。 如果异常存储在返回的任务中,则在等待任务时将引发该异常。 使用异常(如 ArgumentException)仍会同步引发。 有关存储的异常,请参阅 引发的 CopyTo(Stream)异常。

适用于

CopyToAsync(Stream)

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

从当前流中异步读取字节并将其写入到另一个流中。 这两个流位置都按复制的字节数提前。

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

参数

destination
Stream

当前流的内容将复制到的流。

返回

表示异步复制操作的任务。

属性

例外

destinationnull

当前流或目标流已释放。

当前流不支持阅读,或目标流不支持写入。

示例

以下示例演示如何使用两个 FileStream 对象将文件从一个目录异步复制到另一个目录。 FileStream 类是从 Stream 类派生的。 请注意,控件的ClickButton事件处理程序用 async 修饰符标记,因为它调用异步方法

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

注解

使用 CopyToAsync 方法可以执行资源密集型 I/O 操作,而不会阻止main线程。 在 Windows 8.x 应用商店应用或桌面应用中一个耗时的流操作可能阻塞 UI 线程并让应用看起来好像不工作时,这种性能的考虑就显得尤为重要了。 异步方法与 async Visual Basic 和 C# 中的 和 await 关键字结合使用。

复制从当前流中的当前位置开始。

此方法将存储在任务中,它返回该方法的同步对应项可能引发的所有非使用异常。 如果异常存储在返回的任务中,则在等待任务时将引发该异常。 使用异常(如 ArgumentException)仍会同步引发。 有关存储的异常,请参阅 引发的 CopyTo(Stream)异常。

适用于

CopyToAsync(Stream, Int32)

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

使用指定的缓冲区大小,从当前流中异步读取字节并将其写入到另一流中。 这两个流位置都以复制的字节数为高级。

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

参数

destination
Stream

当前流的内容将复制到的流。

bufferSize
Int32

缓冲区的大小(以字节为单位)。 此值必须大于零。 默认大小为 81920。

返回

表示异步复制操作的任务。

属性

例外

destinationnull

buffersize 为负数或零。

当前流或目标流已释放。

当前流不支持阅读,或目标流不支持写入。

注解

使用 CopyToAsync 方法可以执行资源密集型 I/O 操作,而不会阻止main线程。 在 Windows 8.x 应用商店应用或桌面应用中一个耗时的流操作可能阻塞 UI 线程并让应用看起来好像不工作时,这种性能的考虑就显得尤为重要了。 异步方法与 async Visual Basic 和 C# 中的 和 await 关键字结合使用。

复制从当前流中的当前位置开始。

有关在两个流之间复制的示例,请参阅 CopyToAsync(Stream) 重载。

此方法将存储在任务中,它返回该方法的同步对应项可能引发的所有非使用异常。 如果异常存储在返回的任务中,则在等待任务时将引发该异常。 使用异常(如 ArgumentException)仍会同步引发。 有关存储的异常,请参阅 引发的 CopyTo(Stream, Int32)异常。

适用于