ValueTask Structure

Définition

Fournit un résultat 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 Task utilisation AsTask. 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-les ValueTask en un Task en appelant AsTask.

Les opérations suivantes ne doivent jamais être effectuées sur une ValueTask instance :

  • En attente de l’instance plusieurs fois.
  • Appel AsTask plusieurs fois.
  • Utilisation de plusieurs de ces techniques pour consommer l’instance.

Si vous effectuez l’une des versions ci-dessus, les résultats ne sont pas définis.

Il ValueTask s’agit d’une structure qui peut encapsuler une instance ou une TaskIValueTaskSource instance. Le renvoi d’une ValueTaskIValueTaskSource instance encapsulée à partir d’une méthode asynchrone permet aux applications à débit élevé 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 des moments de ValueTask.

L’utilisation d’une ValueTask surcharge au lieu d’une Task surcharge est introduite. Étant donné qu’il ValueTask s’agit d’une structure avec plusieurs champs, le renvoyer à partir de la méthode entraîne la copie de données supplémentaires par rapport au retour d’une référence unique Task . 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. Seulement si l’analyse des performances prouve qu’il vaut la peine d’être ValueTask utilisée au lieu d’un Task. La Task.CompletedTask propriété doit être utilisée pour remettre un singleton terminé correctement dans le cas où une méthode retournant une Task opération se termine de façon synchrone et réussie.

Note

L’utilisation du type ValueTask est prise en charge à partir de C# 7.0 et n’est prise en charge par aucune version de Visual Basic.

Note

Une instance créée avec le constructeur sans paramètre ou par la default(ValueTask) syntaxe (une structure initialisée zéro) représente une opération synchrone, terminée avec succès.

Constructeurs

Nom Description
ValueTask(IValueTaskSource, Int16)

Initialise une nouvelle instance de la classe à l’aide ValueTask de l’objet fourni IValueTaskSource qui représente l’opération.

ValueTask(Task)

Initialise une nouvelle instance de la classe à l’aide ValueTask de la tâche fournie qui représente l’opération.

Propriétés

Nom Description
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 terminée.

IsCompletedSuccessfully

Obtient une valeur qui indique si cet objet représente une opération terminée avec succès.

IsFaulted

Obtient une valeur qui indique si cet objet représente une opération ayant échoué.

Méthodes

Nom Description
AsTask()

Récupère un Task objet 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 actuelle ValueTask .

Equals(ValueTask)

Détermine si l’objet spécifié ValueTask est égal à l’objet actuel ValueTask .

GetAwaiter()

Crée un awaiter pour cette valeur.

GetHashCode()

Retourne le code de hachage pour cette instance.

Preserve()

Obtient un ValueTask élément qui peut être utilisé à tout moment dans le futur.

Opérateurs

Nom Description
Equality(ValueTask, ValueTask)

Compare deux ValueTask valeurs pour l’égalité.

Inequality(ValueTask, ValueTask)

Détermine si deux ValueTask valeurs sont inégales.

S’applique à