FileStream.WriteAsync Metoda

Definicja

Przeciążenia

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

Asynchronicznie zapisuje sekwencję bajtów do bieżącego strumienia, przechodzi bieżącą pozycję w tym strumieniu przez liczbę zapisanych bajtów i monitoruje żądania anulowania.

WriteAsync(ReadOnlyMemory<Byte>, CancellationToken)

Asynchronicznie zapisuje sekwencję bajtów z regionu pamięci do bieżącego strumienia plików, przesuwa bieżącą pozycję w tym strumieniu plików o liczbę zapisanych bajtów i monitoruje żądania anulowania.

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

Źródło:
FileStream.cs
Źródło:
FileStream.cs
Źródło:
FileStream.cs

Asynchronicznie zapisuje sekwencję bajtów do bieżącego strumienia, przechodzi bieżącą pozycję w tym strumieniu przez liczbę zapisanych bajtów i monitoruje żądania anulowania.

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

Parametry

buffer
Byte[]

Bufor do zapisywania danych z.

offset
Int32

Przesunięcie bajtów na podstawie zera, buffer z którego ma rozpocząć kopiowanie bajtów do strumienia.

count
Int32

Maksymalna liczba bajtów do zapisu.

cancellationToken
CancellationToken

Token do monitorowania żądań anulowania.

Zwraca

Zadanie, które reprezentuje asynchroniczny zapis operacji.

Atrybuty

Wyjątki

buffer to null.

offset lub count jest ujemny.

Suma offset wartości i count jest większa niż długość buforu.

Strumień nie obsługuje zapisywania.

Strumień został usunięty.

Strumień jest obecnie używany przez poprzednią operację zapisu.

Token anulowania został anulowany. Ten wyjątek jest przechowywany w zwracanym zadaniu.

Przykłady

W poniższym przykładzie pokazano, jak zapisywać asynchronicznie w pliku.

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

Uwagi

Metoda WriteAsync umożliwia wykonywanie operacji na plikach intensywnie korzystających z zasobów bez blokowania głównego wątku. Ta kwestia wydajności jest szczególnie ważna w aplikacjach, w których czasochłonna operacja strumienia może zablokować wątek interfejsu użytkownika i sprawić, że aplikacja będzie wyświetlana tak, jakby nie działała.

CanWrite Użyj właściwości , aby określić, czy bieżące wystąpienie obsługuje zapisywanie.

Jeśli operacja zostanie anulowana przed jej zakończeniem, zwrócone zadanie zawiera Canceled wartość właściwości Status . Jeśli dojście do pliku zostanie usunięte, zwrócone zadanie zawiera ObjectDisposedException wyjątek we Exception właściwości .

Ta metoda jest przechowywana w zadaniu, które zwraca wszystkie wyjątki nieużytowe, które może zgłosić synchroniczna odpowiednik metody. Jeśli wyjątek jest przechowywany w zwracanym zadaniu, ten wyjątek zostanie zgłoszony podczas oczekiwania zadania. Wyjątki użycia, takie jak ArgumentException, są nadal zgłaszane synchronicznie. W przypadku przechowywanych wyjątków zobacz wyjątki zgłoszone przez Write(Byte[], Int32, Int32)usługę .

Zobacz też

Dotyczy

WriteAsync(ReadOnlyMemory<Byte>, CancellationToken)

Źródło:
FileStream.cs
Źródło:
FileStream.cs
Źródło:
FileStream.cs

Asynchronicznie zapisuje sekwencję bajtów z regionu pamięci do bieżącego strumienia plików, przesuwa bieżącą pozycję w tym strumieniu plików o liczbę zapisanych bajtów i monitoruje żądania anulowania.

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

Parametry

buffer
ReadOnlyMemory<Byte>

Region pamięci do zapisywania danych.

cancellationToken
CancellationToken

Token do monitorowania żądań anulowania. Wartość domyślna to None.

Zwraca

Zadanie, które reprezentuje asynchroniczny zapis operacji.

Wyjątki

Token anulowania został anulowany. Ten wyjątek jest przechowywany w zwracanym zadaniu.

Uwagi

Metoda WriteAsync umożliwia wykonywanie operacji we/wy intensywnie korzystających z zasobów bez blokowania głównego wątku. Ta kwestia wydajności jest szczególnie ważna w aplikacjach, w których czasochłonna operacja strumienia może zablokować wątek interfejsu użytkownika i sprawić, że aplikacja będzie wyświetlana tak, jakby nie działała.

CanWrite Użyj właściwości , aby określić, czy bieżące wystąpienie obsługuje zapisywanie.

Jeśli operacja zostanie anulowana przed jej zakończeniem, zwrócone zadanie zawiera TaskStatus.Canceled wartość właściwości Task.Status .

Dotyczy