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