StreamReader.ReadAsync Méthode

Définition

Surcharges

Nom Description
ReadAsync(Memory<Char>, CancellationToken)

Lit de manière asynchrone les caractères du flux actuel dans un bloc de mémoire.

ReadAsync(Char[], Int32, Int32)

Lit un nombre maximal spécifié de caractères du flux actuel de manière asynchrone et écrit les données dans une mémoire tampon, en commençant à l’index spécifié.

ReadAsync(Memory<Char>, CancellationToken)

Lit de manière asynchrone les caractères du flux actuel dans un bloc de mémoire.

public override System.Threading.Tasks.ValueTask<int> ReadAsync(Memory<char> buffer, System.Threading.CancellationToken cancellationToken = default);
override this.ReadAsync : Memory<char> * System.Threading.CancellationToken -> System.Threading.Tasks.ValueTask<int>
Public Overrides Function ReadAsync (buffer As Memory(Of Char), Optional cancellationToken As CancellationToken = Nothing) As ValueTask(Of Integer)

Paramètres

buffer
Memory<Char>

Lorsque cette méthode est retournée, contient le bloc de mémoire spécifié de caractères remplacé par les caractères lus à partir de la source actuelle.

cancellationToken
CancellationToken

Jeton à surveiller pour les demandes d’annulation. La valeur par défaut est None.

Retours

Tâche de valeur qui représente l’opération de lecture asynchrone. La valeur du paramètre de type de la tâche valeur contient le nombre de caractères qui ont été lus, ou 0 si à la fin du flux et qu’aucune donnée n’a été lue. Le nombre est inférieur ou égal à la buffer longueur, selon que les données sont disponibles dans le flux.

Exceptions

Le jeton d’annulation a été annulé. Cette exception est stockée dans la tâche retournée.

S’applique à

ReadAsync(Char[], Int32, Int32)

Lit un nombre maximal spécifié de caractères du flux actuel de manière asynchrone et écrit les données dans une mémoire tampon, en commençant à l’index spécifié.

public:
 override System::Threading::Tasks::Task<int> ^ ReadAsync(cli::array <char> ^ buffer, int index, int count);
public override System.Threading.Tasks.Task<int> ReadAsync(char[] buffer, int index, int count);
[System.Runtime.InteropServices.ComVisible(false)]
public override System.Threading.Tasks.Task<int> ReadAsync(char[] buffer, int index, int count);
override this.ReadAsync : char[] * int * int -> System.Threading.Tasks.Task<int>
[<System.Runtime.InteropServices.ComVisible(false)>]
override this.ReadAsync : char[] * int * int -> System.Threading.Tasks.Task<int>
Public Overrides Function ReadAsync (buffer As Char(), index As Integer, count As Integer) As Task(Of Integer)

Paramètres

buffer
Char[]

Lorsque cette méthode retourne, contient le tableau de caractères spécifié avec les valeurs comprises entre index et (index + count - 1) remplacées par les caractères lus à partir de la source actuelle.

index
Int32

Position dans buffer laquelle commencer l’écriture.

count
Int32

Nombre maximal de caractères à lire. Si la fin du flux est atteinte avant que le nombre spécifié de caractères soit écrit dans la mémoire tampon, la méthode actuelle retourne.

Retours

Tâche qui représente l’opération de lecture asynchrone. La valeur du TResult paramètre contient le nombre total de caractères lus dans la mémoire tampon. La valeur de résultat peut être inférieure au nombre de caractères demandé si le nombre de caractères actuellement disponibles est inférieur au nombre demandé, ou il peut être égal à 0 (zéro) si la fin du flux a été atteinte.

Attributs

Exceptions

buffer a la valeur null.

index ou count est négatif.

La somme et indexcount est supérieure à la longueur de la mémoire tampon.

Le flux a été supprimé.

Le lecteur est actuellement utilisé par une opération de lecture précédente.

Exemples

L’exemple suivant montre comment lire tous les caractères d’un fichier à l’aide de la ReadAsync(Char[], Int32, Int32) méthode. Elle vérifie si chaque caractère est une lettre, un chiffre ou un espace blanc avant d’ajouter le caractère à une instance de la StringBuilder classe.

using System;
using System.Windows;
using System.IO;
using System.Text;

namespace WpfApplication
{
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }

        private async void Button_Click_1(object sender, RoutedEventArgs e)
        {
            string filename = @"C:\Example\existingfile.txt";
            char[] result;
            StringBuilder builder = new StringBuilder();

            using (StreamReader reader = File.OpenText(filename))
            {
                result = new char[reader.BaseStream.Length];
                await reader.ReadAsync(result, 0, (int)reader.BaseStream.Length);
            }

            foreach (char c in result)
            {
                if (char.IsLetterOrDigit(c) || char.IsWhiteSpace(c))
                {
                    builder.Append(c);
                }
            }
            FileOutput.Text = builder.ToString();
        }
    }
}
Imports System.Text
Imports System.IO

Class MainWindow

    Private Async Sub Button_Click_1(sender As Object, e As RoutedEventArgs)
        Dim filename As String = "C:\Example\existingfile.txt"
        Dim result() As Char
        Dim builder As StringBuilder = New StringBuilder()

        Using reader As StreamReader = File.OpenText(filename)
            ReDim result(reader.BaseStream.Length)
            Await reader.ReadAsync(result, 0, reader.BaseStream.Length)
        End Using

        For Each c As Char In result
            If (Char.IsLetterOrDigit(c) Or Char.IsWhiteSpace(c)) Then
                builder.Append(c)
            End If
            Next
        FileOutput.Text = builder.ToString()
    End Sub
End Class

Remarques

La tâche se termine une fois que le nombre de caractères spécifié par le count paramètre est lu ou que la fin du flux est atteinte.

Cette méthode stocke dans la tâche toutes les exceptions non-utilisation que l’équivalent synchrone de la méthode peut lever. Si une exception est stockée dans la tâche retournée, cette exception est levée lorsque la tâche est attendue. Les exceptions d’utilisation, telles que ArgumentException, sont toujours levées de façon synchrone. Pour les exceptions stockées, consultez les exceptions levées par Read(Char[], Int32, Int32).

S’applique à