Stream.ReadAsync Metoda

Definicja

Asynchronicznie odczytuje sekwencję bajtów z bieżącego strumienia i rozwija pozycję w strumieniu według liczby odczytanych bajtów.

Przeciążenia

ReadAsync(Memory<Byte>, CancellationToken)

Asynchronicznie odczytuje sekwencję bajtów z bieżącego strumienia, rozwija pozycję w strumieniu według liczby odczytanych bajtów i monitoruje żądania anulowania.

ReadAsync(Byte[], Int32, Int32)

Asynchronicznie odczytuje sekwencję bajtów z bieżącego strumienia i rozwija pozycję w strumieniu według liczby odczytanych bajtów.

ReadAsync(Byte[], Int32, Int32, CancellationToken)

Asynchronicznie odczytuje sekwencję bajtów z bieżącego strumienia, rozwija pozycję w strumieniu według liczby odczytanych bajtów i monitoruje żądania anulowania.

ReadAsync(Memory<Byte>, CancellationToken)

Asynchronicznie odczytuje sekwencję bajtów z bieżącego strumienia, rozwija pozycję w strumieniu według liczby odczytanych bajtów i monitoruje żądania anulowania.

public virtual System.Threading.Tasks.ValueTask<int> ReadAsync (Memory<byte> buffer, System.Threading.CancellationToken cancellationToken = default);
abstract member ReadAsync : Memory<byte> * System.Threading.CancellationToken -> System.Threading.Tasks.ValueTask<int>
override this.ReadAsync : Memory<byte> * System.Threading.CancellationToken -> System.Threading.Tasks.ValueTask<int>
Public Overridable Function ReadAsync (buffer As Memory(Of Byte), Optional cancellationToken As CancellationToken = Nothing) As ValueTask(Of Integer)

Parametry

buffer
Memory<Byte>

Region pamięci do zapisu danych.

cancellationToken
CancellationToken

Token do monitorowania żądań anulowania. Wartość domyślna to None.

Zwraca

ValueTask<Int32>

Zadanie reprezentujące operację odczytu asynchronicznego. Wartość właściwości Result zawiera całkowitą liczbę bajtów odczytanych do buforu. Wartość wyniku może być mniejsza niż liczba bajtów przydzielonych w buforze, jeśli liczba bajtów jest obecnie niedostępna lub może być równa 0 (zero), jeśli osiągnięto koniec strumienia.

Uwagi

Metoda ReadAsync umożliwia wykonywanie operacji we/wy intensywnie korzystających z zasobów bez blokowania głównego wątku. Ta kwestia wydajności jest szczególnie ważna w aplikacji ze sklepu Windows 8.x lub aplikacji klasycznej, w której czasochłonna operacja strumienia może zablokować wątek interfejsu użytkownika i sprawić, że aplikacja będzie wyświetlana tak, jakby nie działała. Metody asynchroniczne są używane w połączeniu ze słowami kluczowymi async i await w Visual Basic i C#.

Użyj właściwości , CanRead aby określić, czy bieżące wystąpienie obsługuje odczytywanie.

Jeśli operacja zostanie anulowana przed zakończeniem, zwrócone zadanie zawiera TaskStatus.Canceled wartość właściwości Status .

Aby zapoznać się z przykładem, zobacz przeciążenie ReadAsync(Byte[], Int32, Int32) .

Dotyczy

ReadAsync(Byte[], Int32, Int32)

Asynchronicznie odczytuje sekwencję bajtów z bieżącego strumienia i rozwija pozycję w strumieniu według liczby odczytanych bajtów.

public:
 System::Threading::Tasks::Task<int> ^ ReadAsync(cli::array <System::Byte> ^ buffer, int offset, int count);
public System.Threading.Tasks.Task<int> ReadAsync (byte[] buffer, int offset, int count);
[System.Runtime.InteropServices.ComVisible(false)]
public System.Threading.Tasks.Task<int> ReadAsync (byte[] buffer, int offset, int count);
member this.ReadAsync : byte[] * int * int -> System.Threading.Tasks.Task<int>
[<System.Runtime.InteropServices.ComVisible(false)>]
member this.ReadAsync : byte[] * int * int -> System.Threading.Tasks.Task<int>
Public Function ReadAsync (buffer As Byte(), offset As Integer, count As Integer) As Task(Of Integer)

Parametry

buffer
Byte[]

Bufor do zapisania danych.

offset
Int32

Przesunięcie bajtów, w buffer którym rozpocznie się zapisywanie danych ze strumienia.

count
Int32

Maksymalna liczba bajtów do odczytania.

Zwraca

Task<Int32>

Zadanie reprezentujące operację odczytu asynchronicznego. Wartość parametru TResult zawiera całkowitą liczbę bajtów odczytanych do buforu. Wartość wyniku może być mniejsza niż liczba bajtów żądanych, jeśli liczba obecnie dostępnych bajtów jest mniejsza niż żądana liczba lub może być 0 (zero), jeśli koniec strumienia został osiągnięty.

Atrybuty

Wyjątki

buffer to null.

offset lub count jest ujemny.

Suma offset i count jest większa niż długość buforu.

Strumień nie obsługuje odczytu.

Strumień został usunięty.

Strumień jest obecnie używany przez poprzednią operację odczytu.

Przykłady

W poniższym przykładzie pokazano, jak odczytywać dane z pliku asynchronicznie. W przykładzie FileStream użyto klasy, która pochodzi z Stream klasy .

using System;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.IO;

namespace WpfApplication1
{
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }

        private async void Button_Click(object sender, RoutedEventArgs e)
        {
            string filename = @"c:\Temp\userinputlog.txt";
            byte[] result;

            using (FileStream SourceStream = File.Open(filename, FileMode.Open))
            {
                result = new byte[SourceStream.Length];
                await SourceStream.ReadAsync(result, 0, (int)SourceStream.Length);
            }

            UserInput.Text = System.Text.Encoding.ASCII.GetString(result);
        }
    }
}
Imports System.IO
Imports System.Text

Class MainWindow
    Private Async Sub Button_Click(sender As Object, e As RoutedEventArgs)
        Dim filename As String = "c:\Temp\userinputlog.txt"

        Dim result As Byte()

        Using SourceStream As FileStream = File.Open(filename, FileMode.Open)
            result = New Byte(SourceStream.Length - 1) {}
            Await SourceStream.ReadAsync(result, 0, CType(SourceStream.Length, Integer))
        End Using

        UserInput.Text = System.Text.Encoding.ASCII.GetString(result)
    End Sub
End Class

Uwagi

Metoda ReadAsync umożliwia wykonywanie operacji we/wy intensywnie korzystających z zasobów bez blokowania głównego wątku. Ta kwestia wydajności jest szczególnie ważna w aplikacji ze sklepu Windows 8.x lub aplikacji klasycznej, w której czasochłonna operacja strumienia może zablokować wątek interfejsu użytkownika i sprawić, że aplikacja będzie wyświetlana tak, jakby nie działała. Metody asynchroniczne są używane w połączeniu ze słowami kluczowymi async i await w Visual Basic i C#.

Użyj właściwości , CanRead aby określić, czy bieżące wystąpienie obsługuje odczytywanie.

Dotyczy

ReadAsync(Byte[], Int32, Int32, CancellationToken)

Asynchronicznie odczytuje sekwencję bajtów z bieżącego strumienia, rozwija pozycję w strumieniu według liczby odczytanych bajtów i monitoruje żądania anulowania.

public:
 virtual System::Threading::Tasks::Task<int> ^ ReadAsync(cli::array <System::Byte> ^ buffer, int offset, int count, System::Threading::CancellationToken cancellationToken);
public virtual System.Threading.Tasks.Task<int> ReadAsync (byte[] buffer, int offset, int count, System.Threading.CancellationToken cancellationToken);
[System.Runtime.InteropServices.ComVisible(false)]
public virtual System.Threading.Tasks.Task<int> ReadAsync (byte[] buffer, int offset, int count, System.Threading.CancellationToken cancellationToken);
abstract member ReadAsync : byte[] * int * int * System.Threading.CancellationToken -> System.Threading.Tasks.Task<int>
override this.ReadAsync : byte[] * int * int * System.Threading.CancellationToken -> System.Threading.Tasks.Task<int>
[<System.Runtime.InteropServices.ComVisible(false)>]
abstract member ReadAsync : byte[] * int * int * System.Threading.CancellationToken -> System.Threading.Tasks.Task<int>
override this.ReadAsync : byte[] * int * int * System.Threading.CancellationToken -> System.Threading.Tasks.Task<int>
Public Overridable Function ReadAsync (buffer As Byte(), offset As Integer, count As Integer, cancellationToken As CancellationToken) As Task(Of Integer)

Parametry

buffer
Byte[]

Bufor do zapisania danych.

offset
Int32

Przesunięcie bajtów, w buffer którym rozpocznie się zapisywanie danych ze strumienia.

count
Int32

Maksymalna liczba bajtów do odczytania.

cancellationToken
CancellationToken

Token do monitorowania żądań anulowania. Wartość domyślna to None.

Zwraca

Task<Int32>

Zadanie reprezentujące operację odczytu asynchronicznego. Wartość parametru TResult zawiera całkowitą liczbę bajtów odczytanych do buforu. Wartość wyniku może być mniejsza niż liczba bajtów żądanych, jeśli liczba obecnie dostępnych bajtów jest mniejsza niż żądana liczba lub może być 0 (zero), jeśli koniec strumienia został osiągnięty.

Atrybuty

Wyjątki

buffer to null.

offset lub count jest ujemny.

Suma offset i count jest większa niż długość buforu.

Strumień nie obsługuje odczytu.

Strumień został usunięty.

Strumień jest obecnie używany przez poprzednią operację odczytu.

Uwagi

Metoda ReadAsync umożliwia wykonywanie operacji we/wy intensywnie korzystających z zasobów bez blokowania głównego wątku. Ta kwestia wydajności jest szczególnie ważna w aplikacji ze sklepu Windows 8.x lub aplikacji klasycznej, w której czasochłonna operacja strumienia może zablokować wątek interfejsu użytkownika i sprawić, że aplikacja będzie wyświetlana tak, jakby nie działała. Metody asynchroniczne są używane w połączeniu ze słowami kluczowymi async i await w Visual Basic i C#.

Użyj właściwości , CanRead aby określić, czy bieżące wystąpienie obsługuje odczytywanie.

Jeśli operacja zostanie anulowana przed zakończeniem, zwrócone zadanie zawiera Canceled wartość właściwości Status .

Aby zapoznać się z przykładem, zobacz przeciążenie ReadAsync(Byte[], Int32, Int32) .

Zobacz też

Dotyczy