StreamReader.ReadAsync Metode
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
Overload
ReadAsync(Memory<Char>, CancellationToken) |
Secara asinkron membaca karakter dari aliran saat ini ke dalam blok memori. |
ReadAsync(Char[], Int32, Int32) |
Membaca jumlah karakter maksimum yang ditentukan dari aliran saat ini secara asinkron dan menulis data ke buffer, dimulai pada indeks yang ditentukan. |
ReadAsync(Memory<Char>, CancellationToken)
- Sumber:
- StreamReader.cs
- Sumber:
- StreamReader.cs
- Sumber:
- StreamReader.cs
Secara asinkron membaca karakter dari aliran saat ini ke dalam blok memori.
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)
Parameter
Ketika metode ini kembali, berisi blok memori karakter yang ditentukan yang digantikan oleh karakter yang dibaca dari sumber saat ini.
- cancellationToken
- CancellationToken
Token yang akan dipantau untuk permintaan pembatalan. Nilai defaultnya adalah None.
Mengembalikan
Tugas nilai yang mewakili operasi baca asinkron. Nilai parameter jenis tugas nilai berisi jumlah karakter yang telah dibaca, atau 0 jika di akhir aliran dan tidak ada data yang dibaca. Jumlahnya akan kurang dari atau sama dengan panjangnya buffer
, tergantung pada apakah data tersedia dalam aliran.
Pengecualian
Token pembatalan dibatalkan. Pengecualian ini disimpan ke dalam tugas yang dikembalikan.
Berlaku untuk
ReadAsync(Char[], Int32, Int32)
- Sumber:
- StreamReader.cs
- Sumber:
- StreamReader.cs
- Sumber:
- StreamReader.cs
Membaca jumlah karakter maksimum yang ditentukan dari aliran saat ini secara asinkron dan menulis data ke buffer, dimulai pada indeks yang ditentukan.
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)
Parameter
- buffer
- Char[]
Ketika metode ini kembali, berisi array karakter yang ditentukan dengan nilai antara index
dan (index
+ count
- 1) digantikan oleh karakter yang dibaca dari sumber saat ini.
- index
- Int32
Posisi untuk buffer
mulai menulis.
- count
- Int32
Jumlah maksimum karakter yang akan dibaca. Jika akhir aliran tercapai sebelum jumlah karakter yang ditentukan ditulis ke dalam buffer, metode saat ini akan kembali.
Mengembalikan
Tugas yang mewakili operasi baca asinkron. Nilai TResult
parameter berisi jumlah total karakter yang dibaca ke dalam buffer. Nilai hasilnya bisa kurang dari jumlah karakter yang diminta jika jumlah karakter yang saat ini tersedia kurang dari angka yang diminta, atau bisa 0 (nol) jika akhir aliran telah tercapai.
- Atribut
Pengecualian
buffer
adalah null
.
index
atau count
negatif.
Jumlah index
dan count
lebih besar dari panjang buffer.
Aliran telah dibuang.
Pembaca saat ini sedang digunakan oleh operasi baca sebelumnya.
Contoh
Contoh berikut menunjukkan cara membaca semua karakter dalam file dengan menggunakan ReadAsync(Char[], Int32, Int32) metode . Ini memeriksa apakah setiap karakter adalah huruf, digit, atau spasi putih sebelum menambahkan karakter ke instans StringBuilder kelas.
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
Keterangan
Tugas selesai setelah jumlah karakter yang ditentukan oleh count
parameter dibaca atau akhir aliran tercapai.
Metode ini disimpan dalam tugas yang menampilkan semua pengecualian non-penggunaan yang dapat dilemparkan oleh rekan sinkron metode. Jika pengecualian disimpan ke dalam tugas yang dikembalikan, pengecualian tersebut akan dilemparkan saat tugas ditunggu. Pengecualian penggunaan, seperti ArgumentException, masih dilemparkan secara sinkron. Untuk pengecualian yang disimpan, lihat pengecualian yang dilemparkan oleh Read(Char[], Int32, Int32).