Stream.WriteAsync Methode

Definitie

Asynchroon schrijft een reeks bytes naar de huidige stroom en wordt de huidige positie binnen deze stroom verplaatst door het aantal geschreven bytes.

Overloads

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

Asynchroon schrijft een reeks bytes naar de huidige stroom, verplaatst de huidige positie binnen deze stream door het aantal geschreven bytes en bewaakt annuleringsaanvragen.

WriteAsync(ReadOnlyMemory<Byte>, CancellationToken)

Asynchroon schrijft een reeks bytes naar de huidige stroom, verplaatst de huidige positie binnen deze stream door het aantal geschreven bytes en bewaakt annuleringsaanvragen.

WriteAsync(Byte[], Int32, Int32)

Asynchroon schrijft een reeks bytes naar de huidige stroom en wordt de huidige positie binnen deze stroom verplaatst door het aantal geschreven bytes.

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

Asynchroon schrijft een reeks bytes naar de huidige stroom, verplaatst de huidige positie binnen deze stream door het aantal geschreven bytes en bewaakt annuleringsaanvragen.

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

Parameters

buffer
Byte[]

De buffer waaruit gegevens moeten worden geschreven.

offset
Int32

De byte-offset buffer op basis van nul waaruit bytes naar de stream moeten worden gekopieerd.

count
Int32

Het maximum aantal bytes dat moet worden geschreven.

cancellationToken
CancellationToken

Het token dat moet worden gecontroleerd op annuleringsaanvragen. De standaardwaarde is None.

Retouren

Een taak die de asynchrone schrijfbewerking vertegenwoordigt.

Kenmerken

Uitzonderingen

buffer is null.

offset of count is negatief.

De som van offset en count is groter dan de bufferlengte.

De stream biedt geen ondersteuning voor schrijven.

De stroom is verwijderd.

De stream wordt momenteel gebruikt door een eerdere schrijfbewerking.

Het annuleringstoken is geannuleerd. Deze uitzondering wordt opgeslagen in de geretourneerde taak.

Opmerkingen

Met de WriteAsync methode kunt u resource-intensieve I/O-bewerkingen uitvoeren zonder de hoofdthread te blokkeren. Deze prestatieoverweging is met name belangrijk in een Windows 8.x Store-app of -desktop-app, waarbij een tijdrovende streambewerking de UI-thread kan blokkeren en uw app kan weergeven alsof deze niet werkt. De asynchrone methoden worden gebruikt in combinatie met de trefwoorden async en await in Visual Basic en C#.

Gebruik de CanWrite eigenschap om te bepalen of het huidige exemplaar ondersteuning biedt voor schrijven.

Als de bewerking wordt geannuleerd voordat deze is voltooid, bevat de geretourneerde taak de Canceled waarde voor de Status eigenschap.

Zie de WriteAsync(Byte[], Int32, Int32) overbelasting voor een voorbeeld.

Deze methode slaat op in de taak die alle uitzonderingen voor niet-gebruik retourneert die de synchrone tegenhanger van de methode kan genereren. Als er een uitzondering wordt opgeslagen in de geretourneerde taak, wordt deze uitzondering gegenereerd wanneer de taak wordt gewacht. Gebruiksonderzondering, zoals ArgumentException, worden nog steeds synchroon gegenereerd. Zie de uitzonderingen die zijn gegenereerd door Write(Byte[], Int32, Int32)de opgeslagen uitzonderingen voor de opgeslagen uitzonderingen.

Zie ook

Van toepassing op

WriteAsync(ReadOnlyMemory<Byte>, CancellationToken)

Asynchroon schrijft een reeks bytes naar de huidige stroom, verplaatst de huidige positie binnen deze stream door het aantal geschreven bytes en bewaakt annuleringsaanvragen.

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

Parameters

buffer
ReadOnlyMemory<Byte>

Het geheugengebied waaruit gegevens moeten worden geschreven.

cancellationToken
CancellationToken

Het token dat moet worden gecontroleerd op annuleringsaanvragen. De standaardwaarde is None.

Retouren

Een taak die de asynchrone schrijfbewerking vertegenwoordigt.

Uitzonderingen

Het annuleringstoken is geannuleerd. Deze uitzondering wordt opgeslagen in de geretourneerde taak.

Opmerkingen

Met de WriteAsync methode kunt u resource-intensieve I/O-bewerkingen uitvoeren zonder de hoofdthread te blokkeren. Deze prestatieoverweging is met name belangrijk in een Windows 8.x Store-app of -desktop-app, waarbij een tijdrovende streambewerking de UI-thread kan blokkeren en uw app kan weergeven alsof deze niet werkt. De asynchrone methoden worden gebruikt in combinatie met de trefwoorden async en await in Visual Basic en C#.

Gebruik de CanWrite eigenschap om te bepalen of het huidige exemplaar ondersteuning biedt voor schrijven.

Als de bewerking wordt geannuleerd voordat deze is voltooid, bevat de geretourneerde taak de Canceled waarde voor de Status eigenschap.

Zie de WriteAsync(Byte[], Int32, Int32) overbelasting voor een voorbeeld.

Van toepassing op

WriteAsync(Byte[], Int32, Int32)

Asynchroon schrijft een reeks bytes naar de huidige stroom en wordt de huidige positie binnen deze stroom verplaatst door het aantal geschreven bytes.

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

Parameters

buffer
Byte[]

De buffer waaruit gegevens moeten worden geschreven.

offset
Int32

De byte-offset buffer op basis van nul waaruit bytes naar de stream moeten worden gekopieerd.

count
Int32

Het maximum aantal bytes dat moet worden geschreven.

Retouren

Een taak die de asynchrone schrijfbewerking vertegenwoordigt.

Kenmerken

Uitzonderingen

buffer is null.

offset of count is negatief.

De som van offset en count is groter dan de bufferlengte.

De stream biedt geen ondersteuning voor schrijven.

De stroom is verwijderd.

De stream wordt momenteel gebruikt door een eerdere schrijfbewerking.

Voorbeelden

In het volgende voorbeeld ziet u hoe u asynchroon naar een bestand schrijft. In het voorbeeld wordt de FileStream klasse gebruikt, die is afgeleid van de Stream klasse.

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

Opmerkingen

Met de WriteAsync methode kunt u resource-intensieve I/O-bewerkingen uitvoeren zonder de hoofdthread te blokkeren. Deze prestatieoverweging is met name belangrijk in een Windows 8.x Store-app of -desktop-app, waarbij een tijdrovende streambewerking de UI-thread kan blokkeren en uw app kan weergeven alsof deze niet werkt. De asynchrone methoden worden gebruikt in combinatie met de trefwoorden async en await in Visual Basic en C#.

Gebruik de CanWrite eigenschap om te bepalen of het huidige exemplaar ondersteuning biedt voor schrijven.

Deze methode slaat op in de taak die alle uitzonderingen voor niet-gebruik retourneert die de synchrone tegenhanger van de methode kan genereren. Als er een uitzondering wordt opgeslagen in de geretourneerde taak, wordt deze uitzondering gegenereerd wanneer de taak wordt gewacht. Gebruiksonderzondering, zoals ArgumentException, worden nog steeds synchroon gegenereerd. Zie de uitzonderingen die zijn gegenereerd door Write(Byte[], Int32, Int32)de opgeslagen uitzonderingen voor de opgeslagen uitzonderingen.

Van toepassing op