Поделиться через


FileStream.WriteAsync Метод

Определение

Перегрузки

Имя Описание
WriteAsync(Byte[], Int32, Int32, CancellationToken)

Асинхронно записывает последовательность байтов в текущий поток, перемещает текущую позицию в этом потоке по количеству записанных байтов и отслеживает запросы на отмену.

WriteAsync(ReadOnlyMemory<Byte>, CancellationToken)

Асинхронно записывает последовательность байтов из области памяти в текущий файловый поток, перемещает текущую позицию в этом потоке файлов по количеству записанных байтов и отслеживает запросы на отмену.

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

Исходный код:
FileStream.cs
Исходный код:
FileStream.cs
Исходный код:
FileStream.cs
Исходный код:
FileStream.cs
Исходный код:
FileStream.cs

Асинхронно записывает последовательность байтов в текущий поток, перемещает текущую позицию в этом потоке по количеству записанных байтов и отслеживает запросы на отмену.

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

Параметры

buffer
Byte[]

Буфер для записи данных из.

offset
Int32

Отсчитываемое от нуля смещение buffer байтов, с которого начинается копирование байтов в поток.

count
Int32

Максимальное число байтов для записи.

cancellationToken
CancellationToken

Маркер для отслеживания запросов на отмену.

Возвращаемое значение

Задача, представляющая асинхронную операцию записи.

Атрибуты

Исключения

buffer равно null.

offset или count отрицательный.

offset Сумма и count больше длины буфера.

Поток не поддерживает запись.

Поток удален.

Поток в настоящее время используется предыдущей операцией записи.

Маркер отмены был отменен. Это исключение хранится в возвращаемой задаче.

Примеры

В следующем примере показано, как асинхронно записывать в файл.

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 метод позволяет выполнять ресурсоемкие операции с файлами, не блокируя основной поток. Это особенно важно в приложениях, где операция потокового потока, потребляющая много времени, может блокировать поток пользовательского интерфейса и сделать приложение таким, как если бы оно не работало.

CanWrite Используйте свойство, чтобы определить, поддерживает ли текущий экземпляр запись.

Если операция отменена до завершения, возвращаемая задача содержит Canceled значение свойства Status . Если дескриптор файла удален, возвращаемая задача содержит ObjectDisposedException исключение в свойстве Exception .

Этот метод сохраняет в задаче все исключения без использования, которые может вызывать синхронный аналог метода. Если исключение хранится в возвращаемой задаче, это исключение будет создано при ожидании задачи. Исключения использования, такие как ArgumentException, по-прежнему выбрасываются синхронно. Сведения о сохраненных исключениях см. в исключениях, создаваемых Write(Byte[], Int32, Int32).

См. также раздел

Применяется к

WriteAsync(ReadOnlyMemory<Byte>, CancellationToken)

Исходный код:
FileStream.cs
Исходный код:
FileStream.cs
Исходный код:
FileStream.cs
Исходный код:
FileStream.cs
Исходный код:
FileStream.cs

Асинхронно записывает последовательность байтов из области памяти в текущий файловый поток, перемещает текущую позицию в этом потоке файлов по количеству записанных байтов и отслеживает запросы на отмену.

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

Параметры

buffer
ReadOnlyMemory<Byte>

Область памяти для записи данных из.

cancellationToken
CancellationToken

Маркер для отслеживания запросов на отмену. Значение по умолчанию — None.

Возвращаемое значение

Задача, представляющая асинхронную операцию записи.

Исключения

Маркер отмены был отменен. Это исключение хранится в возвращаемой задаче.

Комментарии

Этот WriteAsync метод позволяет выполнять операции ввода-вывода с большим объемом ресурсов, не блокируя основной поток. Это особенно важно в приложениях, где операция потокового потока, потребляющая много времени, может блокировать поток пользовательского интерфейса и сделать приложение таким, как если бы оно не работало.

CanWrite Используйте свойство, чтобы определить, поддерживает ли текущий экземпляр запись.

Если операция отменена до завершения, возвращаемая задача содержит TaskStatus.Canceled значение свойства Task.Status .

Применяется к