Condividi tramite


StreamReader.ReadAsync Metodo

Definizione

Overload

ReadAsync(Memory<Char>, CancellationToken)

Legge in modo asincrono i caratteri dal flusso corrente in un blocco di memoria.

ReadAsync(Char[], Int32, Int32)

Legge in modo asincrono un numero massimo specificato di caratteri dal flusso corrente e scrive i dati in un buffer, a partire dall'indice specificato.

ReadAsync(Memory<Char>, CancellationToken)

Origine:
StreamReader.cs
Origine:
StreamReader.cs
Origine:
StreamReader.cs

Legge in modo asincrono i caratteri dal flusso corrente in un blocco di memoria.

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)

Parametri

buffer
Memory<Char>

Al termine di questo metodo, contiene il blocco di memoria di caratteri specificato sostituiti con i caratteri letti dall'origine corrente.

cancellationToken
CancellationToken

Token da monitorare per le richieste di annullamento. Il valore predefinito è None.

Restituisce

Attività valore che rappresenta l'operazione di lettura asincrona. Il valore del parametro di tipo dell'attività valore contiene il numero di caratteri letti oppure 0 se alla fine del flusso non è stato letto alcun dato. Il numero sarà minore o uguale alla lunghezza di buffer, a seconda che i dati siano disponibili o meno all'interno del flusso.

Eccezioni

Il token di annullamento è stato annullato. Questa eccezione viene archiviata nell'attività restituita.

Si applica a

ReadAsync(Char[], Int32, Int32)

Origine:
StreamReader.cs
Origine:
StreamReader.cs
Origine:
StreamReader.cs

Legge in modo asincrono un numero massimo specificato di caratteri dal flusso corrente e scrive i dati in un buffer, a partire dall'indice specificato.

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)

Parametri

buffer
Char[]

Quando questo metodo viene restituito, contiene la matrice di caratteri specificata con i valori compresi tra index e (index + + count - 1) sostituiti con i caratteri letti dall'origine corrente.

index
Int32

Posizione in buffer da cui iniziare la scrittura.

count
Int32

Numero massimo di caratteri da leggere. Se viene raggiunta la fine del flusso prima che il numero di caratteri specificato venga scritto nel buffer, il metodo corrente terminerà.

Restituisce

Attività che rappresenta l'operazione di lettura asincrona. Il valore del parametro TResult contiene il numero totale di caratteri letti nel buffer. Il valore del risultato può essere minore del numero di caratteri richiesti se il numero di caratteri attualmente disponibili è minore di quelli richiesti o può essere pari a 0 (zero) se è stata raggiunta la fine del flusso.

Attributi

Eccezioni

buffer è null.

index o count è negativo.

La somma di index e count è maggiore della lunghezza del buffer.

Il flusso è stato eliminato.

Il lettore è attualmente usato da un'operazione di lettura precedente.

Esempio

Nell'esempio seguente viene illustrato come leggere tutti i caratteri in un file usando il ReadAsync(Char[], Int32, Int32) metodo . Controlla se ogni carattere è una lettera, una cifra o uno spazio vuoto prima di aggiungere il carattere a un'istanza della 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

Commenti

L'attività viene completata dopo la lettura del numero di caratteri specificato dal count parametro oppure la fine del flusso viene raggiunta.

Questo metodo archivia nell'attività restituisce tutte le eccezioni non di utilizzo che la controparte sincrona del metodo può generare. Se un'eccezione viene archiviata nell'attività restituita, tale eccezione verrà generata quando l'attività è attesa. Le eccezioni di utilizzo, ad esempio ArgumentException, vengono comunque generate in modo sincrono. Per le eccezioni archiviate, vedere le eccezioni generate da Read(Char[], Int32, Int32).

Si applica a