Stream.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.
Lit de façon asynchrone une séquence d'octets dans le flux actuel et avance la position dans le flux du nombre d'octets lus.
Surcharges
ReadAsync(Memory<Byte>, CancellationToken) |
Lit de façon asynchrone une séquence d'octets dans le flux actuel, avance la position dans le flux du nombre d'octets lus et surveille les demandes d'annulation. |
ReadAsync(Byte[], Int32, Int32) |
Lit de façon asynchrone une séquence d'octets dans le flux actuel et avance la position dans le flux du nombre d'octets lus. |
ReadAsync(Byte[], Int32, Int32, CancellationToken) |
Lit de façon asynchrone une séquence d'octets dans le flux actuel, avance la position dans le flux du nombre d'octets lus et surveille les demandes d'annulation. |
ReadAsync(Memory<Byte>, CancellationToken)
- Source:
- Stream.cs
- Source:
- Stream.cs
- Source:
- Stream.cs
Lit de façon asynchrone une séquence d'octets dans le flux actuel, avance la position dans le flux du nombre d'octets lus et surveille les demandes d'annulation.
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)
Paramètres
- cancellationToken
- CancellationToken
Jeton pour surveiller les requêtes d'annulation. La valeur par défaut est None.
Retours
Tâche qui représente l'opération de lecture asynchrone. La valeur de sa propriété Result contient le nombre total d’octets lus dans la mémoire tampon. La valeur du résultat peut être inférieure à la longueur de la mémoire tampon si ce nombre d’octets n’est pas disponible actuellement, ou elle peut être 0 (zéro) si la longueur de la mémoire tampon est 0 ou 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.
Remarques
La ReadAsync méthode vous permet d’effectuer des opérations d’E/S nécessitant beaucoup de ressources sans bloquer le thread main. Cette considération de performance est particulièrement importante dans une application Windows 8.x Store ou une application de bureau où une longue opération de flux peut bloquer le thread d'interface utilisateur et faire que l'application s'affiche comme si elle ne fonctionnait pas. Les méthodes asynchrones sont utilisées conjointement avec les async
mots clés et await
dans Visual Basic et C#.
Utilisez la CanRead propriété pour déterminer si le instance actuel prend en charge la lecture.
Si l’opération est annulée avant qu’elle ne se termine, la tâche retournée contient la TaskStatus.Canceled valeur de la Status propriété.
Pour obtenir un exemple, consultez la ReadAsync(Byte[], Int32, Int32) surcharge.
S’applique à
ReadAsync(Byte[], Int32, Int32)
- Source:
- Stream.cs
- Source:
- Stream.cs
- Source:
- Stream.cs
Lit de façon asynchrone une séquence d'octets dans le flux actuel et avance la position dans le flux du nombre d'octets lus.
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)
Paramètres
- buffer
- Byte[]
Mémoire tampon où écrire les données.
- offset
- Int32
Dans buffer
, décalage d'octet auquel commencer l'écriture des données à partir du flux.
- count
- Int32
Nombre maximal d'octets à lire.
Retours
Tâche qui représente l'opération de lecture asynchrone. La valeur du paramètre TResult
contient 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 count
est 0 ou si la fin du flux a été atteinte.
- Attributs
Exceptions
buffer
a la valeur null
.
offset
ou count
est un nombre négatif.
La somme de offset
et count
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 antérieure.
Exemples
L’exemple suivant montre comment lire à partir d’un fichier de manière asynchrone. L’exemple utilise la FileStream classe, qui dérive de la Stream classe .
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
Remarques
La ReadAsync méthode vous permet d’effectuer des opérations d’E/S nécessitant beaucoup de ressources sans bloquer le thread main. Cette considération de performance est particulièrement importante dans une application Windows 8.x Store ou une application de bureau où une longue opération de flux peut bloquer le thread d'interface utilisateur et faire que l'application s'affiche comme si elle ne fonctionnait pas. Les méthodes asynchrones sont utilisées conjointement avec les async
mots clés et await
dans Visual Basic et C#.
Utilisez la CanRead propriété pour déterminer si le instance actuel prend en charge la lecture.
Cette méthode stocke dans la tâche toutes les exceptions de 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 sera levée lorsque la tâche est attendue. Les exceptions d’utilisation, telles que ArgumentException, sont toujours levées de manière synchrone. Pour connaître les exceptions stockées, consultez les exceptions levées par Read(Byte[], Int32, Int32).
S’applique à
ReadAsync(Byte[], Int32, Int32, CancellationToken)
- Source:
- Stream.cs
- Source:
- Stream.cs
- Source:
- Stream.cs
Lit de façon asynchrone une séquence d'octets dans le flux actuel, avance la position dans le flux du nombre d'octets lus et surveille les demandes d'annulation.
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)
Paramètres
- buffer
- Byte[]
Mémoire tampon où écrire les données.
- offset
- Int32
Dans buffer
, décalage d'octet auquel commencer l'écriture des données à partir du flux.
- count
- Int32
Nombre maximal d'octets à lire.
- cancellationToken
- CancellationToken
Jeton pour surveiller les requêtes d'annulation. La valeur par défaut est None.
Retours
Tâche qui représente l'opération de lecture asynchrone. La valeur du paramètre TResult
contient 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 count
est 0 ou si la fin du flux a été atteinte.
- Attributs
Exceptions
buffer
a la valeur null
.
offset
ou count
est un nombre négatif.
La somme de offset
et count
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 antérieure.
Le jeton d’annulation a été annulé. Cette exception est stockée dans la tâche retournée.
Remarques
La ReadAsync méthode vous permet d’effectuer des opérations d’E/S nécessitant beaucoup de ressources sans bloquer le thread main. Cette considération de performance est particulièrement importante dans une application Windows 8.x Store ou une application de bureau où une longue opération de flux peut bloquer le thread d'interface utilisateur et faire que l'application s'affiche comme si elle ne fonctionnait pas. Les méthodes asynchrones sont utilisées conjointement avec les async
mots clés et await
dans Visual Basic et C#.
Utilisez la CanRead propriété pour déterminer si le instance actuel prend en charge la lecture.
Si l’opération est annulée avant qu’elle ne se termine, la tâche retournée contient la Canceled valeur de la Status propriété.
Pour obtenir un exemple, consultez la ReadAsync(Byte[], Int32, Int32) surcharge.
Cette méthode stocke dans la tâche toutes les exceptions de 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 sera levée lorsque la tâche est attendue. Les exceptions d’utilisation, telles que ArgumentException, sont toujours levées de manière synchrone. Pour connaître les exceptions stockées, consultez les exceptions levées par Read(Byte[], Int32, Int32).