Bagikan melalui


Stream.ReadAsync Metode

Definisi

Secara asinkron membaca urutan byte dari aliran saat ini dan memajukan posisi dalam aliran dengan jumlah byte yang dibaca.

Overload

ReadAsync(Memory<Byte>, CancellationToken)

Secara asinkron membaca urutan byte dari aliran saat ini, memajukan posisi dalam aliran dengan jumlah byte yang dibaca, dan memantau permintaan pembatalan.

ReadAsync(Byte[], Int32, Int32)

Secara asinkron membaca urutan byte dari aliran saat ini dan memajukan posisi dalam aliran dengan jumlah byte yang dibaca.

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

Secara asinkron membaca urutan byte dari aliran saat ini, memajukan posisi dalam aliran dengan jumlah byte yang dibaca, dan memantau permintaan pembatalan.

ReadAsync(Memory<Byte>, CancellationToken)

Sumber:
Stream.cs
Sumber:
Stream.cs
Sumber:
Stream.cs

Secara asinkron membaca urutan byte dari aliran saat ini, memajukan posisi dalam aliran dengan jumlah byte yang dibaca, dan memantau permintaan pembatalan.

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)

Parameter

buffer
Memory<Byte>

Wilayah memori untuk menulis data.

cancellationToken
CancellationToken

Token yang akan dipantau untuk permintaan pembatalan. Nilai defaultnya adalah None.

Mengembalikan

Tugas yang mewakili operasi baca asinkron. Nilai propertinya Result berisi jumlah total byte yang dibaca ke dalam buffer. Nilai hasil bisa kurang dari panjang buffer jika banyak byte saat ini tidak tersedia, atau bisa 0 (nol) jika panjang buffer adalah 0 atau jika akhir aliran telah tercapai.

Pengecualian

Token pembatalan dibatalkan. Pengecualian ini disimpan ke dalam tugas yang dikembalikan.

Keterangan

Metode ini ReadAsync memungkinkan Anda melakukan operasi I/O intensif sumber daya tanpa memblokir utas utama. Pertimbangan performa ini sangat penting dalam aplikasi Windows 8.x Store atau aplikasi desktop tempat operasi aliran yang memakan waktu dapat memblokir rangkaian UI dan membuat aplikasi tampak seolah-olah tidak berfungsi. Metode asinkron digunakan bersama dengan async kata kunci dan await di Visual Basic dan C#.

CanRead Gunakan properti untuk menentukan apakah instans saat ini mendukung pembacaan.

Jika operasi dibatalkan sebelum selesai, tugas yang dikembalikan berisi TaskStatus.Canceled nilai untuk Status properti .

Misalnya, lihat ReadAsync(Byte[], Int32, Int32) kelebihan beban.

Berlaku untuk

ReadAsync(Byte[], Int32, Int32)

Sumber:
Stream.cs
Sumber:
Stream.cs
Sumber:
Stream.cs

Secara asinkron membaca urutan byte dari aliran saat ini dan memajukan posisi dalam aliran dengan jumlah byte yang dibaca.

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)

Parameter

buffer
Byte[]

Buffer untuk menulis data ke dalamnya.

offset
Int32

Offset byte untuk buffer mulai menulis data dari aliran.

count
Int32

Jumlah maksimum byte yang akan dibaca.

Mengembalikan

Tugas yang mewakili operasi baca asinkron. Nilai TResult parameter berisi jumlah total byte yang dibaca ke dalam buffer. Nilai hasil bisa kurang dari jumlah byte yang diminta jika jumlah byte yang saat ini tersedia kurang dari angka yang diminta, atau bisa 0 (nol) jika count adalah 0 atau jika akhir aliran telah tercapai.

Atribut

Pengecualian

bufferadalah null.

offset atau count negatif.

Jumlah offset dan count lebih besar dari panjang buffer.

Aliran tidak mendukung pembacaan.

Aliran telah dibuang.

Aliran saat ini sedang digunakan oleh operasi baca sebelumnya.

Contoh

Contoh berikut menunjukkan cara membaca dari file secara asinkron. Contohnya menggunakan FileStream kelas , yang berasal dari Stream kelas .

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

Keterangan

Metode ini ReadAsync memungkinkan Anda melakukan operasi I/O intensif sumber daya tanpa memblokir utas utama. Pertimbangan performa ini sangat penting dalam aplikasi Windows 8.x Store atau aplikasi desktop tempat operasi aliran yang memakan waktu dapat memblokir rangkaian UI dan membuat aplikasi tampak seolah-olah tidak berfungsi. Metode asinkron digunakan bersama dengan async kata kunci dan await di Visual Basic dan C#.

CanRead Gunakan properti untuk menentukan apakah instans saat ini mendukung pembacaan.

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(Byte[], Int32, Int32).

Berlaku untuk

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

Sumber:
Stream.cs
Sumber:
Stream.cs
Sumber:
Stream.cs

Secara asinkron membaca urutan byte dari aliran saat ini, memajukan posisi dalam aliran dengan jumlah byte yang dibaca, dan memantau permintaan pembatalan.

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)

Parameter

buffer
Byte[]

Buffer untuk menulis data ke dalamnya.

offset
Int32

Offset byte untuk buffer mulai menulis data dari aliran.

count
Int32

Jumlah maksimum byte yang akan dibaca.

cancellationToken
CancellationToken

Token yang akan dipantau untuk permintaan pembatalan. Nilai defaultnya adalah None.

Mengembalikan

Tugas yang mewakili operasi baca asinkron. Nilai TResult parameter berisi jumlah total byte yang dibaca ke dalam buffer. Nilai hasil bisa kurang dari jumlah byte yang diminta jika jumlah byte yang saat ini tersedia kurang dari angka yang diminta, atau bisa 0 (nol) jika count adalah 0 atau jika akhir aliran telah tercapai.

Atribut

Pengecualian

bufferadalah null.

offset atau count negatif.

Jumlah offset dan count lebih besar dari panjang buffer.

Aliran tidak mendukung pembacaan.

Aliran telah dibuang.

Aliran saat ini sedang digunakan oleh operasi baca sebelumnya.

Token pembatalan dibatalkan. Pengecualian ini disimpan ke dalam tugas yang dikembalikan.

Keterangan

Metode ini ReadAsync memungkinkan Anda melakukan operasi I/O intensif sumber daya tanpa memblokir utas utama. Pertimbangan performa ini sangat penting dalam aplikasi Windows 8.x Store atau aplikasi desktop tempat operasi aliran yang memakan waktu dapat memblokir rangkaian UI dan membuat aplikasi tampak seolah-olah tidak berfungsi. Metode asinkron digunakan bersama dengan async kata kunci dan await di Visual Basic dan C#.

CanRead Gunakan properti untuk menentukan apakah instans saat ini mendukung pembacaan.

Jika operasi dibatalkan sebelum selesai, tugas yang dikembalikan berisi Canceled nilai untuk Status properti .

Misalnya, lihat ReadAsync(Byte[], Int32, Int32) kelebihan beban.

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(Byte[], Int32, Int32).

Lihat juga

Berlaku untuk