閱讀英文

共用方式為


Stream.CopyToAsync 方法

定義

以非同步的方式從目前資料流讀取所有位元組,並將其寫入另一個資料流中。 這兩個數據流位置會依複製的位元元組數目進階。

多載

CopyToAsync(Stream, Int32, CancellationToken)

使用指定的緩衝區大小和取消語彙基元,以非同步的方式從目前資料流讀取位元組,並將其寫入另一個資料流。 這兩個數據流位置都是由複製的位元元組數目進階。

CopyToAsync(Stream, CancellationToken)

使用指定的取消權杖,以非同步的方式從目前資料流讀取位元組,並將其寫入另一個資料流。 這兩個數據流位置都是由複製的位元元組數目進階。

CopyToAsync(Stream)

以非同步的方式從目前資料流讀取所有位元組,並將其寫入另一個資料流中。 這兩個數據流位置都是由複製的位元元組數目進階。

CopyToAsync(Stream, Int32)

使用指定的緩衝區大小,以非同步的方式從目前資料流讀取所有位元組,並將其寫入另一個資料流中。 這兩個數據流位置都是由複製的位元元組數目進階。

CopyToAsync(Stream, Int32, CancellationToken)

來源:
Stream.cs
來源:
Stream.cs
來源:
Stream.cs

使用指定的緩衝區大小和取消語彙基元,以非同步的方式從目前資料流讀取位元組,並將其寫入另一個資料流。 這兩個數據流位置都是由複製的位元元組數目進階。

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

參數

destination
Stream

目前資料流的內容將複製到其中的資料流。

bufferSize
Int32

緩衝區的大小 (以位元組為單位)。 這個值必須大於零。 預設大小為 81920。

cancellationToken
CancellationToken

用來監視是否有取消要求的語彙基元。 預設值是 None

傳回

表示非同步複製作業的工作。

屬性

例外狀況

destinationnull

buffersize 為負值或零。

目前資料流或目的資料流已處置。

目前資料流不支援讀取,或目的資料流不支援寫入。

取消令牌已取消。 此例外狀況會儲存在傳回的工作中。

備註

方法 CopyToAsync 可讓您執行大量資源的 I/O 作業,而不會封鎖主線程。 這項效能考量對於 Windows 8.x Store 應用程式或傳統型應用程式而言特別重要,尤其是針對耗時的資料流作業可能會阻礙 UI 執行緒,使應用程式看起來像是停止運作的情況。 異步方法會與 async Visual Basic 和 C# 中的 和 await 關鍵詞搭配使用。

如果作業在完成之前取消,則傳回的工作會 Canceled 包含 屬性的值 Status

複製會從目前數據流中的目前位置開始。

如需兩個數據流之間複製的範例,請參閱 CopyToAsync(Stream) 多載。

這個方法會儲存在工作中,它會傳回方法同步對應專案可以擲回的所有非使用狀況例外狀況。 如果例外狀況儲存在傳回的工作中,則會在等候工作時擲回該例外狀況。 使用狀況例外狀況,例如 ArgumentException,仍會同步擲回。 如需預存的例外狀況,請參閱 所 CopyTo(Stream, Int32)擲回的例外狀況。

適用於

.NET 9 及其他版本
產品 版本
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0

CopyToAsync(Stream, CancellationToken)

來源:
Stream.cs
來源:
Stream.cs
來源:
Stream.cs

使用指定的取消權杖,以非同步的方式從目前資料流讀取位元組,並將其寫入另一個資料流。 這兩個數據流位置都是由複製的位元元組數目進階。

public System.Threading.Tasks.Task CopyToAsync (System.IO.Stream destination, System.Threading.CancellationToken cancellationToken);

參數

destination
Stream

目前資料流的內容將複製到其中的資料流。

cancellationToken
CancellationToken

用來監視是否有取消要求的語彙基元。 預設值是 None

傳回

表示非同步複製作業的工作。

例外狀況

取消令牌已取消。 此例外狀況會儲存在傳回的工作中。

備註

方法 CopyToAsync 可讓您執行大量資源的 I/O 作業,而不會封鎖主線程。 這項效能考量對於 Windows 8.x Store 應用程式或傳統型應用程式而言特別重要,尤其是針對耗時的資料流作業可能會阻礙 UI 執行緒,使應用程式看起來像是停止運作的情況。 異步方法會與 async Visual Basic 和 C# 中的 和 await 關鍵詞搭配使用。

如果作業在完成之前取消,則傳回的工作會 Canceled 包含 屬性的值 Status

複製會從目前數據流中的目前位置開始。

如需兩個數據流之間複製的範例,請參閱 CopyToAsync(Stream) 多載。

這個方法會儲存在工作中,它會傳回方法同步對應專案可以擲回的所有非使用狀況例外狀況。 如果例外狀況儲存在傳回的工作中,則會在等候工作時擲回該例外狀況。 使用狀況例外狀況,例如 ArgumentException,仍會同步擲回。 如需預存的例外狀況,請參閱 所 CopyTo(Stream)擲回的例外狀況。

適用於

.NET 9 及其他版本
產品 版本
.NET Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Standard 2.1

CopyToAsync(Stream)

來源:
Stream.cs
來源:
Stream.cs
來源:
Stream.cs

以非同步的方式從目前資料流讀取所有位元組,並將其寫入另一個資料流中。 這兩個數據流位置都是由複製的位元元組數目進階。

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

參數

destination
Stream

目前資料流的內容將複製到其中的資料流。

傳回

表示非同步複製作業的工作。

屬性

例外狀況

destinationnull

目前資料流或目的資料流已處置。

目前資料流不支援讀取,或目的資料流不支援寫入。

範例

下列範例示範如何使用兩 FileStream 個 物件,以異步方式將檔案從一個目錄複製到另一個目錄。 FileStream 類別衍生自 Stream 類別。 請注意, Click 控件的 Button 事件處理程式會以修飾詞標示, 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);
                    }
                }
            }
        }
    }
}

備註

方法 CopyToAsync 可讓您執行大量資源的 I/O 作業,而不會封鎖主線程。 這項效能考量對於 Windows 8.x Store 應用程式或傳統型應用程式而言特別重要,尤其是針對耗時的資料流作業可能會阻礙 UI 執行緒,使應用程式看起來像是停止運作的情況。 異步方法會與 async Visual Basic 和 C# 中的 和 await 關鍵詞搭配使用。

複製會從目前數據流中的目前位置開始。

這個方法會儲存在工作中,它會傳回方法同步對應專案可以擲回的所有非使用狀況例外狀況。 如果例外狀況儲存在傳回的工作中,則會在等候工作時擲回該例外狀況。 使用狀況例外狀況,例如 ArgumentException,仍會同步擲回。 如需預存的例外狀況,請參閱 所 CopyTo(Stream)擲回的例外狀況。

適用於

.NET 9 及其他版本
產品 版本
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0

CopyToAsync(Stream, Int32)

來源:
Stream.cs
來源:
Stream.cs
來源:
Stream.cs

使用指定的緩衝區大小,以非同步的方式從目前資料流讀取所有位元組,並將其寫入另一個資料流中。 這兩個數據流位置會依複製的位元元組數目進階。

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

參數

destination
Stream

目前資料流的內容將複製到其中的資料流。

bufferSize
Int32

緩衝區的大小 (以位元組為單位)。 這個值必須大於零。 預設大小為 81920。

傳回

表示非同步複製作業的工作。

屬性

例外狀況

destinationnull

buffersize 為負值或零。

目前資料流或目的資料流已處置。

目前資料流不支援讀取,或目的資料流不支援寫入。

備註

方法 CopyToAsync 可讓您執行大量資源的 I/O 作業,而不會封鎖主線程。 這項效能考量對於 Windows 8.x Store 應用程式或傳統型應用程式而言特別重要,尤其是針對耗時的資料流作業可能會阻礙 UI 執行緒,使應用程式看起來像是停止運作的情況。 異步方法會與 async Visual Basic 和 C# 中的 和 await 關鍵詞搭配使用。

複製會從目前數據流中的目前位置開始。

如需兩個數據流之間複製的範例,請參閱 CopyToAsync(Stream) 多載。

這個方法會儲存在工作中,它會傳回方法同步對應專案可以擲回的所有非使用狀況例外狀況。 如果例外狀況儲存在傳回的工作中,則會在等候工作時擲回該例外狀況。 使用狀況例外狀況,例如 ArgumentException,仍會同步擲回。 如需預存的例外狀況,請參閱 所 CopyTo(Stream, Int32)擲回的例外狀況。

適用於

.NET 9 及其他版本
產品 版本
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0