StreamReader.ReadAsync Metoda
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Přetížení
| Name | Description |
|---|---|
| ReadAsync(Memory<Char>, CancellationToken) |
Asynchronně čte znaky z aktuálního datového proudu do bloku paměti. |
| ReadAsync(Char[], Int32, Int32) |
Načte zadaný maximální počet znaků z aktuálního datového proudu asynchronně a zapíše data do vyrovnávací paměti počínaje zadaným indexem. |
ReadAsync(Memory<Char>, CancellationToken)
- Zdroj:
- StreamReader.cs
- Zdroj:
- StreamReader.cs
- Zdroj:
- StreamReader.cs
- Zdroj:
- StreamReader.cs
- Zdroj:
- StreamReader.cs
Asynchronně čte znaky z aktuálního datového proudu do bloku paměti.
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)
Parametry
Pokud tato metoda vrátí, obsahuje zadaný blok paměti znaků nahrazené znaky přečtené z aktuálního zdroje.
- cancellationToken
- CancellationToken
Token pro monitorování žádostí o zrušení. Výchozí hodnota je None.
Návraty
Hodnota úloha, která představuje asynchronní operaci čtení. Hodnota parametru typu úkolu hodnoty obsahuje počet znaků, které byly načteny, nebo 0, pokud na konci datového proudu a nebyla načtena žádná data. Číslo bude menší nebo rovno buffer délce v závislosti na tom, jestli jsou data dostupná v rámci datového proudu.
Výjimky
Token zrušení byl zrušen. Tato výjimka je uložena do vrácené úlohy.
Platí pro
ReadAsync(Char[], Int32, Int32)
- Zdroj:
- StreamReader.cs
- Zdroj:
- StreamReader.cs
- Zdroj:
- StreamReader.cs
- Zdroj:
- StreamReader.cs
- Zdroj:
- StreamReader.cs
Načte zadaný maximální počet znaků z aktuálního datového proudu asynchronně a zapíše data do vyrovnávací paměti počínaje zadaným indexem.
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)
Parametry
- buffer
- Char[]
Pokud tato metoda vrátí, obsahuje zadanou znakovou matici s hodnotami mezi index a (index + count - 1) nahrazené znaky přečtenými z aktuálního zdroje.
- index
- Int32
Pozice, ve buffer které začít psát.
- count
- Int32
Maximální počet znaků, které se mají přečíst. Pokud je dosaženo konce datového proudu před zadaným počtem znaků je zapsán do vyrovnávací paměti, aktuální metoda vrátí.
Návraty
Úloha, která představuje asynchronní operaci čtení. Hodnota parametru TResult obsahuje celkový počet znaků načtených do vyrovnávací paměti. Výsledná hodnota může být menší než požadovaný počet znaků, pokud je počet aktuálně dostupných znaků menší než požadované číslo, nebo může být 0 (nula), pokud byl dosažen konec datového proudu.
- Atributy
Výjimky
buffer je null.
index nebo count je negativní.
Součet index a count je větší než délka vyrovnávací paměti.
Stream byl odstraněn.
Čtečka je aktuálně používána předchozí operací čtení.
Příklady
Následující příklad ukazuje, jak číst všechny znaky v souboru pomocí ReadAsync(Char[], Int32, Int32) metody. Před přidáním znaku do instance třídy zkontroluje, zda je každý znak písmenem, číslicí nebo prázdným znakem StringBuilder .
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
Poznámky
Úkol se dokončí po načtení počtu znaků zadaných parametrem count nebo dosažení konce datového proudu.
Tato metoda ukládá do úlohy všechny výjimky bez použití, které může vyvolat synchronní protějšek metody. Pokud je výjimka uložena do vrácené úlohy, tato výjimka bude vyvolána, když je úkol očekáván. Výjimky použití, například ArgumentException, jsou stále vyvolány synchronně. V případě uložených výjimek se podívejte na výjimky vyvolané Read(Char[], Int32, Int32).