FileStream.ReadAsync Méthode
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
Surcharges
| Nom | Description |
|---|---|
| ReadAsync(Memory<Byte>, CancellationToken) |
Lit de façon asynchrone une séquence d’octets à partir du flux de fichiers actuel et les écrit dans une région de mémoire, avance la position dans le flux de fichiers par le nombre d’octets lus et surveille les demandes d’annulation. |
| ReadAsync(Byte[], Int32, Int32, CancellationToken) |
Lit de façon asynchrone une séquence d’octets du flux de fichiers actuel et les écrit dans un tableau d’octets commençant par un décalage spécifié, avance la position dans le flux de fichiers par le nombre d’octets lus et surveille les demandes d’annulation. |
ReadAsync(Memory<Byte>, CancellationToken)
- Source:
- FileStream.cs
- Source:
- FileStream.cs
- Source:
- FileStream.cs
- Source:
- FileStream.cs
- Source:
- FileStream.cs
Lit de façon asynchrone une séquence d’octets à partir du flux de fichiers actuel et les écrit dans une région de mémoire, avance la position dans le flux de fichiers par le nombre d’octets lus et surveille les demandes d’annulation.
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)
Paramètres
- cancellationToken
- CancellationToken
Jeton à surveiller pour les demandes d’annulation. La valeur par défaut est None.
Retours
Tâche qui représente l’opération de lecture asynchrone et encapsule le nombre total d’octets lus dans la mémoire tampon. La valeur de résultat peut être inférieure au nombre d’octets demandé si le nombre d’octets actuellement disponibles est inférieur au nombre demandé, ou il peut être égal à 0 (zéro) si la fin du flux a été atteinte.
Exceptions
Le jeton d’annulation a été annulé. Cette exception est stockée dans la tâche retournée.
Exemples
L’exemple suivant montre comment lire à partir d’un fichier de façon asynchrone.
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
Remarques
La ReadAsync méthode vous permet d’effectuer des opérations de fichiers gourmandes en ressources sans bloquer le thread principal. Cette considération en matière de performances est particulièrement importante dans une application Windows 8.x Store ou une application de bureau où une opération de flux de temps peut bloquer le thread d’interface utilisateur et faire apparaître votre application comme si elle ne fonctionne pas. Les méthodes asynchrones sont utilisées conjointement avec les async mots clés et await Visual Basic et C#.
Utilisez la CanRead propriété pour déterminer si l’instance actuelle prend en charge la lecture.
Si l’opération est annulée avant sa fin, la tâche retournée contient la TaskStatus.Canceled valeur de la Status propriété. Si le handle du fichier est supprimé, la tâche retournée contient l’exception ObjectDisposedException dans la Task.Exception propriété.
S’applique à
ReadAsync(Byte[], Int32, Int32, CancellationToken)
- Source:
- FileStream.cs
- Source:
- FileStream.cs
- Source:
- FileStream.cs
- Source:
- FileStream.cs
- Source:
- FileStream.cs
Lit de façon asynchrone une séquence d’octets du flux de fichiers actuel et les écrit dans un tableau d’octets commençant par un décalage spécifié, avance la position dans le flux de fichiers par le nombre d’octets lus et surveille les demandes d’annulation.
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)
Paramètres
- buffer
- Byte[]
Mémoire tampon dans laquelle écrire les données.
- offset
- Int32
Décalage d’octet dans buffer lequel commencer l’écriture de données à partir du flux.
- count
- Int32
Nombre maximal d’octets à lire.
- cancellationToken
- CancellationToken
Jeton à surveiller pour les demandes d’annulation.
Retours
Tâche qui représente l’opération de lecture asynchrone et encapsule le nombre total d’octets lus dans la mémoire tampon. La valeur de résultat peut être inférieure au nombre d’octets demandé si le nombre d’octets actuellement disponibles est inférieur au nombre demandé, ou il peut être égal à 0 (zéro) si la fin du flux a été atteinte.
- Attributs
Exceptions
buffer a la valeur null.
offset ou count est négatif.
La somme et offsetcount est supérieure à la longueur de la mémoire tampon.
Le flux ne prend pas en charge la lecture.
Le flux a été supprimé.
Le flux est actuellement utilisé par une opération de lecture précédente.
Le jeton d’annulation a été annulé. Cette exception est stockée dans la tâche retournée.
Exemples
L’exemple suivant montre comment lire à partir d’un fichier de façon asynchrone.
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
Remarques
La ReadAsync méthode vous permet d’effectuer des opérations de fichiers gourmandes en ressources sans bloquer le thread principal. Cette considération en matière de performances est particulièrement importante dans une application Windows 8.x Store ou une application de bureau où une opération de flux de temps peut bloquer le thread d’interface utilisateur et faire apparaître votre application comme si elle ne fonctionne pas. Les méthodes asynchrones sont utilisées conjointement avec les async mots clés et await Visual Basic et C#.
Utilisez la CanRead propriété pour déterminer si l’instance actuelle prend en charge la lecture.
Si l’opération est annulée avant sa fin, la tâche retournée contient la TaskStatus.Canceled valeur de la Task.Status propriété. Si le handle du fichier est supprimé, la tâche retournée contient l’exception ObjectDisposedException dans la Task.Exception propriété.
Cette méthode stocke dans la tâche toutes les exceptions non-utilisation que l’équivalent synchrone de la méthode peut lever. Si une exception est stockée dans la tâche retournée, cette exception est levée lorsque la tâche est attendue. Les exceptions d’utilisation, telles que ArgumentException, sont toujours levées de façon synchrone. Pour les exceptions stockées, consultez les exceptions levées par Read(Byte[], Int32, Int32).