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 .