StreamReader.ReadAsync Metoda
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Przeciążenia
ReadAsync(Memory<Char>, CancellationToken) |
Asynchronicznie odczytuje znaki z bieżącego strumienia do bloku pamięci. |
ReadAsync(Char[], Int32, Int32) |
Odczytuje określoną maksymalną liczbę znaków z bieżącego strumienia asynchronicznie i zapisuje dane w buforze, począwszy od określonego indeksu. |
ReadAsync(Memory<Char>, CancellationToken)
- Źródło:
- StreamReader.cs
- Źródło:
- StreamReader.cs
- Źródło:
- StreamReader.cs
Asynchronicznie odczytuje znaki z bieżącego strumienia do bloku pamięci.
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
Gdy ta metoda zwraca, zawiera określony blok pamięci znaków zastąpiony przez znaki odczytywane z bieżącego źródła.
- cancellationToken
- CancellationToken
Token do monitorowania żądań anulowania. Wartość domyślna to None.
Zwraca
Zadanie wartości reprezentujące operację odczytu asynchronicznego. Wartość parametru typu zadania wartości zawiera liczbę znaków odczytanych lub 0, jeśli na końcu strumienia nie odczytano żadnych danych. Liczba będzie mniejsza lub równa buffer
długości, w zależności od tego, czy dane są dostępne w strumieniu.
Wyjątki
Token anulowania został anulowany. Ten wyjątek jest przechowywany w zwróconym zadaniu.
Dotyczy
ReadAsync(Char[], Int32, Int32)
- Źródło:
- StreamReader.cs
- Źródło:
- StreamReader.cs
- Źródło:
- StreamReader.cs
Odczytuje określoną maksymalną liczbę znaków z bieżącego strumienia asynchronicznie i zapisuje dane w buforze, począwszy od określonego indeksu.
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[]
Gdy ta metoda zwraca, zawiera określoną tablicę znaków z wartościami między index
i (index
+ count
- 1) zastąpionymi znakami odczytywanymi z bieżącego źródła.
- index
- Int32
Pozycja, w buffer
której rozpocząć pisanie.
- count
- Int32
Maksymalna liczba znaków do odczytania. Jeśli koniec strumienia zostanie osiągnięty przed zapisaną określoną liczbą znaków w buforze, zwraca bieżąca metoda.
Zwraca
Zadanie reprezentujące operację odczytu asynchronicznego. Wartość parametru TResult
zawiera całkowitą liczbę znaków odczytanych do buforu. Wartość wyniku może być mniejsza niż liczba znaków żądanych, jeśli liczba dostępnych znaków jest obecnie mniejsza niż żądana liczba lub może być równa 0 (zero), jeśli koniec strumienia został osiągnięty.
- Atrybuty
Wyjątki
buffer
to null
.
index
lub count
jest ujemny.
Suma index
wartości i count
jest większa niż długość buforu.
Strumień został usunięty.
Czytelnik jest obecnie używany przez poprzednią operację odczytu.
Przykłady
W poniższym przykładzie pokazano, jak odczytać wszystkie znaki w pliku przy użyciu ReadAsync(Char[], Int32, Int32) metody . Sprawdza, czy każdy znak jest literą, cyfrą lub białym znakiem przed dodaniem znaku do wystąpienia StringBuilder klasy.
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
Uwagi
Zadanie zostanie zakończone po odczytaniu count
liczby znaków określonych przez parametr lub osiągnięciu końca strumienia.
Ta metoda przechowuje w zadaniu wszystkie wyjątki inne niż użycie, które mogą zgłaszać synchroniczna odpowiednik metody. Jeśli wyjątek jest przechowywany w zwróconym zadaniu, ten wyjątek zostanie zgłoszony po oczekiwaniu na zadanie. Wyjątki użycia, takie jak ArgumentException, są nadal zgłaszane synchronicznie. Aby uzyskać informacje o przechowywanych wyjątkach, zobacz wyjątki zgłaszane przez Read(Char[], Int32, Int32)usługę .