FileStream.WriteAsync Método

Definición

Sobrecargas

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

Escribe de forma asincrónica una secuencia de bytes en la secuencia actual, se hace avanzar la posición actual dentro de la secuencia el número de bytes escritos y controla las solicitudes de cancelación.

WriteAsync(ReadOnlyMemory<Byte>, CancellationToken)

Escribe de forma asincrónica una secuencia de bytes de una región de memoria en la secuencia de archivo actual, avanza la posición actual en esta secuencia de archivo según el número de bytes escritos y supervisa las solicitudes de cancelación.

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

Source:
FileStream.cs
Source:
FileStream.cs
Source:
FileStream.cs

Escribe de forma asincrónica una secuencia de bytes en la secuencia actual, se hace avanzar la posición actual dentro de la secuencia el número de bytes escritos y controla las solicitudes de cancelación.

C#
public override System.Threading.Tasks.Task WriteAsync (byte[] buffer, int offset, int count, System.Threading.CancellationToken cancellationToken);
C#
[System.Runtime.InteropServices.ComVisible(false)]
public override System.Threading.Tasks.Task WriteAsync (byte[] buffer, int offset, int count, System.Threading.CancellationToken cancellationToken);

Parámetros

buffer
Byte[]

Búfer del que se van a escribir datos.

offset
Int32

Desplazamiento en bytes de base cero de buffer desde donde se comienzan a copiar los bytes en la secuencia.

count
Int32

Número máximo de bytes que se pueden escribir.

cancellationToken
CancellationToken

Token para supervisar solicitudes de cancelación.

Devoluciones

Tarea que representa la operación de escritura asincrónica.

Atributos

Excepciones

buffer es null.

offset o count es negativo.

La suma de offset y count es mayor que la longitud del búfer.

La secuencia no admite escritura.

Se ha eliminado la secuencia.

La secuencia está actualmente en uso por una operación de escritura anterior.

Se canceló el token de cancelación. Esta excepción se almacena en la tarea devuelta.

Ejemplos

En el ejemplo siguiente se muestra cómo escribir de forma asincrónica en un archivo.

C#
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);
            }
        }
    }
}

Comentarios

El WriteAsync método permite realizar operaciones de archivos que consumen muchos recursos sin bloquear el subproceso principal. Esta consideración de rendimiento es especialmente importante en las aplicaciones en las que una operación de secuencia que consume mucho tiempo puede bloquear el subproceso de la interfaz de usuario y hacer que la aplicación aparezca como si no funcionara.

Use la CanWrite propiedad para determinar si la instancia actual admite la escritura.

Si la operación se cancela antes de completarse, la tarea devuelta contiene el Canceled valor de la Status propiedad . Si el identificador del archivo se elimina, la tarea devuelta contiene la ObjectDisposedException excepción en la Exception propiedad .

Este método almacena en la tarea que devuelve todas las excepciones que no son de uso que puede producir el homólogo sincrónico del método. Si se almacena una excepción en la tarea devuelta, esa excepción se producirá cuando se espere a la tarea. Las excepciones de uso, como ArgumentException, se siguen produciendo de forma sincrónica. Para ver las excepciones almacenadas, vea las excepciones producidas por Write(Byte[], Int32, Int32).

Consulte también

Se aplica a

.NET 9 otras versiones
Producto Versiones
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0

WriteAsync(ReadOnlyMemory<Byte>, CancellationToken)

Source:
FileStream.cs
Source:
FileStream.cs
Source:
FileStream.cs

Escribe de forma asincrónica una secuencia de bytes de una región de memoria en la secuencia de archivo actual, avanza la posición actual en esta secuencia de archivo según el número de bytes escritos y supervisa las solicitudes de cancelación.

C#
public override System.Threading.Tasks.ValueTask WriteAsync (ReadOnlyMemory<byte> buffer, System.Threading.CancellationToken cancellationToken = default);

Parámetros

buffer
ReadOnlyMemory<Byte>

Región de memoria desde la que se van a escribir los datos.

cancellationToken
CancellationToken

Token para supervisar solicitudes de cancelación. El valor predeterminado es None.

Devoluciones

Tarea que representa la operación de escritura asincrónica.

Excepciones

Se canceló el token de cancelación. Esta excepción se almacena en la tarea devuelta.

Comentarios

El WriteAsync método permite realizar operaciones de E/S intensivas en recursos sin bloquear el subproceso principal. Esta consideración de rendimiento es especialmente importante en las aplicaciones en las que una operación de secuencia que consume mucho tiempo puede bloquear el subproceso de la interfaz de usuario y hacer que la aplicación aparezca como si no funcionara.

Use la CanWrite propiedad para determinar si la instancia actual admite la escritura.

Si la operación se cancela antes de completarse, la tarea devuelta contiene el TaskStatus.Canceled valor de la Task.Status propiedad .

Se aplica a

.NET 9 otras versiones
Producto Versiones
.NET Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Standard 2.1