FileStream.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<Byte>, CancellationToken) |
Secara asinkron membaca urutan byte dari aliran file saat ini dan menulisnya ke wilayah memori, memajukan posisi dalam aliran file dengan jumlah byte yang dibaca, dan memantau permintaan pembatalan. |
ReadAsync(Byte[], Int32, Int32, CancellationToken) |
Secara asinkron membaca urutan byte dari aliran file saat ini dan menulisnya ke array byte yang dimulai pada offset tertentu, memajukan posisi dalam aliran file dengan jumlah byte yang dibaca, dan memantau permintaan pembatalan. |
ReadAsync(Memory<Byte>, CancellationToken)
- Sumber:
- FileStream.cs
- Sumber:
- FileStream.cs
- Sumber:
- FileStream.cs
Secara asinkron membaca urutan byte dari aliran file saat ini dan menulisnya ke wilayah memori, memajukan posisi dalam aliran file dengan jumlah byte yang dibaca, dan memantau permintaan pembatalan.
public override System.Threading.Tasks.ValueTask<int> ReadAsync (Memory<byte> buffer, System.Threading.CancellationToken cancellationToken = default);
override this.ReadAsync : Memory<byte> * System.Threading.CancellationToken -> System.Threading.Tasks.ValueTask<int>
Public Overrides Function ReadAsync (buffer As Memory(Of Byte), Optional cancellationToken As CancellationToken = Nothing) As ValueTask(Of Integer)
Parameter
- cancellationToken
- CancellationToken
Token yang akan dipantau untuk permintaan pembatalan. Nilai defaultnya adalah None.
Mengembalikan
Tugas yang mewakili operasi baca asinkron dan membungkus jumlah total byte yang dibaca ke dalam buffer. Nilai hasilnya bisa kurang dari jumlah byte yang diminta jika jumlah byte yang saat ini tersedia kurang dari angka yang diminta, atau bisa 0 (nol) jika akhir aliran telah tercapai.
Pengecualian
Token pembatalan dibatalkan. Pengecualian ini disimpan ke dalam tugas yang dikembalikan.
Contoh
Contoh berikut menunjukkan cara membaca dari file secara asinkron.
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);
}
}
}
open System.Text
open System.IO
let read () =
task {
let filename = @"c:\Temp\userinputlog.txt"
use sourceStream = File.Open(filename, FileMode.Open)
let length = int sourceStream.Length
let result = Array.zeroCreate length
let! _ = sourceStream.ReadAsync(result, 0, length)
return Encoding.ASCII.GetString result
}
let main =
task {
let! text = read ()
printfn $"{text}"
}
main.Wait()
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 file 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 . Jika handel ke file dibuang, tugas yang dikembalikan berisi ObjectDisposedException pengecualian dalam Task.Exception properti .
Berlaku untuk
ReadAsync(Byte[], Int32, Int32, CancellationToken)
- Sumber:
- FileStream.cs
- Sumber:
- FileStream.cs
- Sumber:
- FileStream.cs
Secara asinkron membaca urutan byte dari aliran file saat ini dan menulisnya ke array byte yang dimulai pada offset tertentu, memajukan posisi dalam aliran file dengan jumlah byte yang dibaca, dan memantau permintaan pembatalan.
public:
override System::Threading::Tasks::Task<int> ^ ReadAsync(cli::array <System::Byte> ^ buffer, int offset, int count, System::Threading::CancellationToken cancellationToken);
public override System.Threading.Tasks.Task<int> ReadAsync (byte[] buffer, int offset, int count, System.Threading.CancellationToken cancellationToken);
[System.Runtime.InteropServices.ComVisible(false)]
public override System.Threading.Tasks.Task<int> ReadAsync (byte[] buffer, int offset, int count, System.Threading.CancellationToken cancellationToken);
override this.ReadAsync : byte[] * int * int * System.Threading.CancellationToken -> System.Threading.Tasks.Task<int>
[<System.Runtime.InteropServices.ComVisible(false)>]
override this.ReadAsync : byte[] * int * int * System.Threading.CancellationToken -> System.Threading.Tasks.Task<int>
Public Overrides 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.
Mengembalikan
Tugas yang mewakili operasi baca asinkron dan membungkus jumlah total byte yang dibaca ke dalam buffer. Nilai hasilnya bisa kurang dari jumlah byte yang diminta jika jumlah byte yang saat ini tersedia kurang dari angka yang diminta, atau bisa 0 (nol) jika akhir aliran telah tercapai.
- Atribut
Pengecualian
buffer
adalah 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.
Contoh
Contoh berikut menunjukkan cara membaca dari file secara asinkron.
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);
}
}
}
open System.Text
open System.IO
let read () =
task {
let filename = @"c:\Temp\userinputlog.txt"
use sourceStream = File.Open(filename, FileMode.Open)
let length = int sourceStream.Length
let result = Array.zeroCreate length
let! _ = sourceStream.ReadAsync(result, 0, length)
return Encoding.ASCII.GetString result
}
let main =
task {
let! text = read ()
printfn $"{text}"
}
main.Wait()
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 file 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 Task.Status properti . Jika handel ke file dibuang, tugas yang dikembalikan berisi ObjectDisposedException pengecualian dalam Task.Exception properti .
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).