通过


Stream.WriteAsync 方法

定义

以异步方式将字节序列写入当前流,并通过写入的字节数推进此流中的当前位置。

重载

名称 说明
WriteAsync(ReadOnlyMemory<Byte>, CancellationToken)

将字节序列异步写入当前流,按写入的字节数推进此流中的当前位置,并监视取消请求。

WriteAsync(Byte[], Int32, Int32)

以异步方式将字节序列写入当前流,并通过写入的字节数推进此流中的当前位置。

WriteAsync(Byte[], Int32, Int32, CancellationToken)

将字节序列异步写入当前流,按写入的字节数推进此流中的当前位置,并监视取消请求。

WriteAsync(ReadOnlyMemory<Byte>, CancellationToken)

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

将字节序列异步写入当前流,按写入的字节数推进此流中的当前位置,并监视取消请求。

public virtual System.Threading.Tasks.ValueTask WriteAsync(ReadOnlyMemory<byte> buffer, System.Threading.CancellationToken cancellationToken = default);
abstract member WriteAsync : ReadOnlyMemory<byte> * System.Threading.CancellationToken -> System.Threading.Tasks.ValueTask
override this.WriteAsync : ReadOnlyMemory<byte> * System.Threading.CancellationToken -> System.Threading.Tasks.ValueTask
Public Overridable Function WriteAsync (buffer As ReadOnlyMemory(Of Byte), Optional cancellationToken As CancellationToken = Nothing) As ValueTask

参数

buffer
ReadOnlyMemory<Byte>

要从中写入数据的内存区域。

cancellationToken
CancellationToken

用于监视取消请求的令牌。 默认值为 None

返回

表示异步写入作的任务。

例外

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

注解

使用 WriteAsync 此方法可以执行资源密集型 I/O 操作,而无需阻止主线程。 在 Windows 8.x 应用商店应用或桌面应用中,这种性能注意事项尤其重要,其中耗时的流作可能会阻止 UI 线程,并使你的应用看起来好像不起作用一样。 异步方法与 Visual Basic 中的 async 和 C# 中的 await 关键字结合使用。

使用 CanWrite 属性确定当前实例是否支持写入。

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

有关示例,请参阅 WriteAsync(Byte[], Int32, Int32) 重载。

适用于

WriteAsync(Byte[], Int32, Int32)

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

以异步方式将字节序列写入当前流,并通过写入的字节数推进此流中的当前位置。

public:
 System::Threading::Tasks::Task ^ WriteAsync(cli::array <System::Byte> ^ buffer, int offset, int count);
public System.Threading.Tasks.Task WriteAsync(byte[] buffer, int offset, int count);
[System.Runtime.InteropServices.ComVisible(false)]
public System.Threading.Tasks.Task WriteAsync(byte[] buffer, int offset, int count);
member this.WriteAsync : byte[] * int * int -> System.Threading.Tasks.Task
[<System.Runtime.InteropServices.ComVisible(false)>]
member this.WriteAsync : byte[] * int * int -> System.Threading.Tasks.Task
Public Function WriteAsync (buffer As Byte(), offset As Integer, count As Integer) As Task

参数

buffer
Byte[]

要从中写入数据的缓冲区。

offset
Int32

从零开始的字节偏移量 buffer ,从中开始将字节复制到流。

count
Int32

要写入的最大字节数。

返回

表示异步写入作的任务。

属性

例外

buffernull

offsetcount 为负数。

其总和 offset 大于 count 缓冲区长度。

流不支持写入。

流已释放。

流当前正由以前的写入操作使用。

示例

以下示例演示如何异步写入文件。 该示例使用 FileStream 派生自该类的 Stream 类。

using System;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.IO;

namespace WpfApplication1
{
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }

        private async void Button_Click(object sender, RoutedEventArgs e)
        {
            UnicodeEncoding uniencoding = new UnicodeEncoding();
            string filename = @"c:\Users\exampleuser\Documents\userinputlog.txt";

            byte[] result = uniencoding.GetBytes(UserInput.Text);

            using (FileStream SourceStream = File.Open(filename, FileMode.OpenOrCreate))
            {
                SourceStream.Seek(0, SeekOrigin.End);
                await SourceStream.WriteAsync(result, 0, result.Length);
            }
        }
    }
}
Imports System.IO
Imports System.Text

Class MainWindow
    Private Async Sub Button_Click(sender As Object, e As RoutedEventArgs)
        Dim uniencoding As UnicodeEncoding = New UnicodeEncoding()
        Dim filename As String = "c:\Users\exampleuser\Documents\userinputlog.txt"

        Dim result As Byte() = uniencoding.GetBytes(UserInput.Text)

        Using SourceStream As FileStream = File.Open(filename, FileMode.OpenOrCreate)
            SourceStream.Seek(0, SeekOrigin.End)
            Await SourceStream.WriteAsync(result, 0, result.Length)
        End Using
    End Sub
End Class

注解

使用 WriteAsync 此方法可以执行资源密集型 I/O 操作,而无需阻止主线程。 在 Windows 8.x 应用商店应用或桌面应用中,这种性能注意事项尤其重要,其中耗时的流作可能会阻止 UI 线程,并使你的应用看起来好像不起作用一样。 异步方法与 Visual Basic 中的 async 和 C# 中的 await 关键字结合使用。

使用 CanWrite 属性确定当前实例是否支持写入。

此方法存储在任务中,它返回该方法的同步对应项可以引发的所有非使用异常。 如果异常存储在返回的任务中,则等待任务时将引发该异常。 使用情况异常(例如 ArgumentException)仍会同步引发。 有关存储的异常,请参阅由 Write(Byte[], Int32, Int32)..

适用于

WriteAsync(Byte[], Int32, Int32, CancellationToken)

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

将字节序列异步写入当前流,按写入的字节数推进此流中的当前位置,并监视取消请求。

public:
 virtual System::Threading::Tasks::Task ^ WriteAsync(cli::array <System::Byte> ^ buffer, int offset, int count, System::Threading::CancellationToken cancellationToken);
public virtual System.Threading.Tasks.Task WriteAsync(byte[] buffer, int offset, int count, System.Threading.CancellationToken cancellationToken);
[System.Runtime.InteropServices.ComVisible(false)]
public virtual System.Threading.Tasks.Task WriteAsync(byte[] buffer, int offset, int count, System.Threading.CancellationToken cancellationToken);
abstract member WriteAsync : byte[] * int * int * System.Threading.CancellationToken -> System.Threading.Tasks.Task
override this.WriteAsync : byte[] * int * int * System.Threading.CancellationToken -> System.Threading.Tasks.Task
[<System.Runtime.InteropServices.ComVisible(false)>]
abstract member WriteAsync : byte[] * int * int * System.Threading.CancellationToken -> System.Threading.Tasks.Task
override this.WriteAsync : byte[] * int * int * System.Threading.CancellationToken -> System.Threading.Tasks.Task
Public Overridable Function WriteAsync (buffer As Byte(), offset As Integer, count As Integer, cancellationToken As CancellationToken) As Task

参数

buffer
Byte[]

要从中写入数据的缓冲区。

offset
Int32

从零开始的字节偏移量 buffer ,从中开始将字节复制到流。

count
Int32

要写入的最大字节数。

cancellationToken
CancellationToken

用于监视取消请求的令牌。 默认值为 None

返回

表示异步写入作的任务。

属性

例外

buffernull

offsetcount 为负数。

其总和 offset 大于 count 缓冲区长度。

流不支持写入。

流已释放。

流当前正由以前的写入操作使用。

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

注解

使用 WriteAsync 此方法可以执行资源密集型 I/O 操作,而无需阻止主线程。 在 Windows 8.x 应用商店应用或桌面应用中,这种性能注意事项尤其重要,其中耗时的流作可能会阻止 UI 线程,并使你的应用看起来好像不起作用一样。 异步方法与 Visual Basic 中的 async 和 C# 中的 await 关键字结合使用。

使用 CanWrite 属性确定当前实例是否支持写入。

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

有关示例,请参阅 WriteAsync(Byte[], Int32, Int32) 重载。

此方法存储在任务中,它返回该方法的同步对应项可以引发的所有非使用异常。 如果异常存储在返回的任务中,则等待任务时将引发该异常。 使用情况异常(例如 ArgumentException)仍会同步引发。 有关存储的异常,请参阅由 Write(Byte[], Int32, Int32)..

另请参阅

适用于