Partager via


ValueTask Structure

Définition

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
ValueTask
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()

Récupère un objet Task qui représente ce ValueTask.

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.

S’applique à