StreamReader.ReadAsync Metodo
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Overload
| Nome | Descrizione |
|---|---|
| ReadAsync(Memory<Char>, CancellationToken) |
Legge in modo asincrono i caratteri dal flusso corrente in un blocco di memoria. |
| ReadAsync(Char[], Int32, Int32) |
Legge un numero massimo di caratteri specificato dal flusso corrente in modo asincrono e scrive i dati in un buffer, a partire dall'indice specificato. |
ReadAsync(Memory<Char>, CancellationToken)
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
Quando termina, questo metodo contiene il blocco di memoria specificato di caratteri sostituiti dai caratteri letti dall'origine corrente.
- cancellationToken
- CancellationToken
Token da monitorare per le richieste di annullamento. Il valore predefinito è None.
Valori restituiti
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 e nessun dato è stato letto. Il numero sarà minore o uguale alla buffer lunghezza, a seconda che i dati siano disponibili 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)
Legge un numero massimo di caratteri specificato dal flusso corrente in modo asincrono 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 termina, questo metodo contiene la matrice di caratteri specificata con i valori compresi tra index e (index + count - 1) sostituiti dai caratteri letti dall'origine corrente.
- index
- Int32
Posizione in in buffer cui iniziare la scrittura.
- count
- Int32
Numero massimo di caratteri da leggere. Se la fine del flusso viene raggiunta prima che il numero specificato di caratteri venga scritto nel buffer, il metodo corrente restituisce .
Valori restituiti
Attività che rappresenta l'operazione di lettura asincrona. Il valore del TResult parametro 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 del numero richiesto oppure può essere 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 in uso 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 . Verifica 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 che il numero di caratteri specificato dal count parametro viene letto o viene raggiunta la fine del flusso.
Questo metodo archivia nell'attività che 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).