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
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
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).