ValueTask Structure
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.
Fournit un résultat pouvant être attendu d'une opération asynchrone.
public value class ValueTask : IEquatable<System::Threading::Tasks::ValueTask>
public readonly struct ValueTask : IEquatable<System.Threading.Tasks.ValueTask>
type ValueTask = struct
Public Structure ValueTask
Implements IEquatable(Of ValueTask)
- Héritage
- Implémente
Remarques
Une ValueTask
instance peut être attendue ou convertie en un à l’aide AsTaskTask de . Une ValueTask
instance ne peut être attendue qu’une seule fois, et les consommateurs peuvent ne pas appeler GetAwaiter() tant que l’instance n’est pas terminée. Si ces limitations sont inacceptables, convertissez le ValueTask
en un Task en appelant AsTask.
Les opérations suivantes ne doivent jamais être effectuées sur une ValueTask
instance :
- En attendant l’instance plusieurs fois.
- Appel plusieurs AsTask fois.
- Utilisation de plusieurs de ces techniques pour consommer l’instance.
Si vous effectuez l’une des tâches ci-dessus, les résultats ne sont pas définis.
Un ValueTask
est une structure qui peut encapsuler une Task instance ou une IValueTaskSource instance. Le renvoi d’un ValueTask
qui encapsule une IValueTaskSource instance à partir d’une méthode asynchrone permet aux applications à haut débit d’éviter les allocations à l’aide d’un pool d’objets réutilisables IValueTaskSource . Pour plus d’informations, consultez Présentation des raisons, des éléments et du moment de ValueTask.
L’utilisation d’un ValueTask
au lieu d’un introduit une Task surcharge. Étant donné que ValueTask
est une structure avec plusieurs champs, le renvoi à partir de la méthode entraîne la copie de plus de données par rapport au retour d’une seule Task référence. Par conséquent, le choix par défaut pour toute méthode asynchrone qui ne retourne pas de résultat doit être de retourner un Task. Ce n’est que si l’analyse des performances s’avère utile qu’un ValueTask
doit être utilisé au lieu d’un Task. La Task.CompletedTask propriété doit être utilisée pour remettre un singleton correctement terminé dans le cas où une méthode renvoyant un Task se termine de manière synchrone et réussie.
Notes
L’utilisation du ValueTask
type est prise en charge à partir de C# 7.0 et n’est prise en charge par aucune version de Visual Basic.
Notes
Une instance créée avec le constructeur sans paramètre ou par la default(ValueTask)
syntaxe (une structure à initialisation zéro) représente une opération terminée de manière synchrone et réussie.
Constructeurs
ValueTask(IValueTaskSource, Int16) |
Initialise une nouvelle instance de la classe ValueTask en utilisant l’objet IValueTaskSource fourni qui représente l’opération. |
ValueTask(Task) |
Initialise une nouvelle instance de la classe ValueTask en utilisant la tâche fournie qui représente l’opération. |
Propriétés
CompletedTask |
Obtient une tâche qui s’est déjà terminée correctement. |
IsCanceled |
Obtient une valeur qui indique si cet objet représente une opération annulée. |
IsCompleted |
Obtient une valeur qui indique si cet objet représente une opération accomplie. |
IsCompletedSuccessfully |
Obtient une valeur qui indique si cet objet représente une opération réussie. |
IsFaulted |
Obtient une valeur qui indique si cet objet représente une opération ayant échoué. |
Méthodes
AsTask() | |
ConfigureAwait(Boolean) |
Configure un awaiter pour cette valeur. |
Equals(Object) |
Détermine si l'objet spécifié est égal à l'instance ValueTask actuelle. |
Equals(ValueTask) |
Détermine si l'objet ValueTask spécifié est égal à l'objet ValueTask en cours. |
FromCanceled(CancellationToken) |
Crée un ValueTask qui s’est terminé en raison d’une annulation avec le jeton d’annulation spécifié. |
FromCanceled<TResult>(CancellationToken) |
Crée un ValueTask<TResult> qui s’est terminé en raison d’une annulation avec le jeton d’annulation spécifié. |
FromException(Exception) |
Crée un ValueTask qui s’est terminé avec l’exception spécifiée. |
FromException<TResult>(Exception) |
Crée un ValueTask<TResult> qui s’est terminé avec l’exception spécifiée. |
FromResult<TResult>(TResult) |
Crée un ValueTask<TResult> qui s'est terminé avec succès avec le résultat spécifié. |
GetAwaiter() |
Crée un awaiter pour cette valeur. |
GetHashCode() |
Retourne le code de hachage de cette instance. |
Preserve() |
Obtient un ValueTask qui peut être utilisé à tout moment dans le futur. |
Opérateurs
Equality(ValueTask, ValueTask) |
Compare si deux valeurs ValueTask sont égales. |
Inequality(ValueTask, ValueTask) |
Détermine si deux valeurs ValueTask sont inégales. |