StreamReader.ReadAsync Methode
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
Overloads
| Name | Description |
|---|---|
| ReadAsync(Memory<Char>, CancellationToken) |
De tekens uit de huidige stroom worden asynchroon gelezen in een geheugenblok. |
| ReadAsync(Char[], Int32, Int32) |
Leest een opgegeven maximum aantal tekens uit de huidige stroom asynchroon en schrijft de gegevens naar een buffer, beginnend bij de opgegeven index. |
ReadAsync(Memory<Char>, CancellationToken)
De tekens uit de huidige stroom worden asynchroon gelezen in een geheugenblok.
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)
Parameters
Wanneer deze methode wordt geretourneerd, bevat het opgegeven geheugenblok tekens vervangen door de tekens die uit de huidige bron worden gelezen.
- cancellationToken
- CancellationToken
Het token dat moet worden gecontroleerd op annuleringsaanvragen. De standaardwaarde is None.
Retouren
Een waardetaak die de asynchrone leesbewerking vertegenwoordigt. De waarde van de typeparameter van de waardetaak bevat het aantal tekens dat is gelezen of 0 als aan het einde van de stroom geen gegevens zijn gelezen. Het getal is kleiner dan of gelijk aan de buffer lengte, afhankelijk van of de gegevens beschikbaar zijn in de stream.
Uitzonderingen
Het annuleringstoken is geannuleerd. Deze uitzondering wordt opgeslagen in de geretourneerde taak.
Van toepassing op
ReadAsync(Char[], Int32, Int32)
Leest een opgegeven maximum aantal tekens uit de huidige stroom asynchroon en schrijft de gegevens naar een buffer, beginnend bij de opgegeven index.
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)
Parameters
- buffer
- Char[]
Wanneer deze methode wordt geretourneerd, bevat de opgegeven tekenmatrix met de waarden tussen index en (index + count - 1) vervangen door de tekens die uit de huidige bron worden gelezen.
- index
- Int32
De positie buffer waarin moet worden geschreven.
- count
- Int32
Het maximum aantal tekens dat moet worden gelezen. Als het einde van de stroom wordt bereikt voordat het opgegeven aantal tekens in de buffer wordt geschreven, retourneert de huidige methode.
Retouren
Een taak die de asynchrone leesbewerking vertegenwoordigt. De waarde van de TResult parameter bevat het totale aantal tekens dat in de buffer wordt gelezen. De resultaatwaarde kan kleiner zijn dan het aantal tekens dat is aangevraagd als het aantal tekens dat momenteel beschikbaar is kleiner is dan het aangevraagde getal, of het kan 0 (nul) zijn als het einde van de stream is bereikt.
- Kenmerken
Uitzonderingen
buffer is null.
index of count is negatief.
De som van index en count is groter dan de bufferlengte.
De stroom is verwijderd.
De lezer wordt momenteel gebruikt door een eerdere leesbewerking.
Voorbeelden
In het volgende voorbeeld ziet u hoe u alle tekens in een bestand kunt lezen met behulp van de ReadAsync(Char[], Int32, Int32) methode. Er wordt gecontroleerd of elk teken een letter, cijfer of witruimte is voordat u het teken toevoegt aan een exemplaar van de StringBuilder klasse.
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
Opmerkingen
De taak wordt voltooid nadat het aantal tekens dat door de count parameter is opgegeven, is gelezen of het einde van de stream is bereikt.
Deze methode slaat op in de taak die alle uitzonderingen voor niet-gebruik retourneert die de synchrone tegenhanger van de methode kan genereren. Als er een uitzondering wordt opgeslagen in de geretourneerde taak, wordt deze uitzondering gegenereerd wanneer de taak wordt gewacht. Gebruiksonderzondering, zoals ArgumentException, worden nog steeds synchroon gegenereerd. Zie de uitzonderingen die zijn gegenereerd door Read(Char[], Int32, Int32)de opgeslagen uitzonderingen voor de opgeslagen uitzonderingen.