StreamReader.ReadAsync Yöntem

Tanım

Aşırı Yüklemeler

ReadAsync(Memory<Char>, CancellationToken)

Geçerli akıştan gelen karakterleri zaman uyumsuz olarak bir bellek bloğuna okur.

ReadAsync(Char[], Int32, Int32)

Geçerli akıştan belirtilen en fazla karakter sayısını zaman uyumsuz olarak okur ve belirtilen dizinden başlayarak verileri arabelleğe yazar.

ReadAsync(Memory<Char>, CancellationToken)

Source:
StreamReader.cs
Source:
StreamReader.cs
Source:
StreamReader.cs

Geçerli akıştan gelen karakterleri zaman uyumsuz olarak bir bellek bloğuna okur.

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)

Parametreler

buffer
Memory<Char>

Bu yöntem döndürdüğünde, geçerli kaynaktan okunan karakterlerle değiştirilen belirtilen bellek bloğunu içerir.

cancellationToken
CancellationToken

İptal istekleri için izlenecek belirteç. None varsayılan değerdir.

Döndürülenler

Zaman uyumsuz okuma işlemini temsil eden bir değer görevi. Değer görevinin tür parametresinin değeri okunmuş karakter sayısını veya akışın sonunda veri okunmadıysa 0 değerini içerir. Verilerin akış içinde kullanılabilir olup olmadığına bağlı olarak, sayı uzunluk değerinden küçük veya buna eşit buffer olacaktır.

Özel durumlar

İptal belirteci iptal edildi. Bu özel durum, döndürülen görevde depolanır.

Şunlara uygulanır

ReadAsync(Char[], Int32, Int32)

Source:
StreamReader.cs
Source:
StreamReader.cs
Source:
StreamReader.cs

Geçerli akıştan belirtilen en fazla karakter sayısını zaman uyumsuz olarak okur ve belirtilen dizinden başlayarak verileri arabelleğe yazar.

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)

Parametreler

buffer
Char[]

Bu yöntem döndürdüğünde, ve (index + count - 1) arasındaki index değerlerin geçerli kaynaktan okunan karakterlerle değiştirdiği belirtilen karakter dizisini içerir.

index
Int32

Yazmaya başlayabileceğiniz konum buffer .

count
Int32

Okunacak en fazla karakter sayısı. Belirtilen sayıda karakter arabelleğe yazılmadan önce akışın sonuna ulaşılırsa geçerli yöntem döndürür.

Döndürülenler

Zaman uyumsuz okuma işlemini temsil eden görev. parametresinin TResult değeri arabelleğe okunan toplam karakter sayısını içerir. Sonuç değeri, kullanılabilir durumdaki karakter sayısı istenen sayıdan küçükse istenen karakter sayısından küçük veya akışın sonuna ulaşıldıysa 0 (sıfır) olabilir.

Öznitelikler

Özel durumlar

buffer, null değeridir.

index veya count negatiftir.

ve count toplamını index arabellek uzunluğundan daha büyük.

Akış atıldı.

Okuyucu şu anda önceki bir okuma işlemi tarafından kullanılıyor.

Örnekler

Aşağıdaki örnekte, yöntemini kullanarak bir dosyadaki tüm karakterlerin nasıl okunduğu gösterilmektedir ReadAsync(Char[], Int32, Int32) . Sınıfın bir örneğine StringBuilder karakteri eklemeden önce her karakterin bir harf, rakam veya boşluk olup olmadığını denetler.

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

Açıklamalar

Parametre tarafından belirtilen karakter sayısı okunduktan veya akışın count sonuna ulaşıldıktan sonra görev tamamlanır.

Bu yöntem, yöntemin zaman uyumlu karşılık geleninin atabileceği tüm kullanım dışı özel durumları döndürdüğü görevde depolar. Döndürülen görevde bir özel durum depolanıyorsa, görev beklenirken bu özel durum oluşturulur. gibi ArgumentExceptionkullanım özel durumları yine de zaman uyumlu olarak oluşturulur. Depolanan özel durumlar için tarafından oluşan Read(Char[], Int32, Int32)özel durumlara bakın.

Şunlara uygulanır