ValueTask ValueTask ValueTask ValueTask Struct

Définition

Fournit un résultat pouvant être attendu d'une opération asynchrone.Provides an awaitable result of an asynchronous operation.

public value class ValueTask : IEquatable<System::Threading::Tasks::ValueTask>
public struct ValueTask : IEquatable<System.Threading.Tasks.ValueTask>
type ValueTask = struct
Public Structure ValueTask
Implements IEquatable(Of ValueTask)
Héritage
Implémente

Remarques

Un ValueTask instance peut être attendue ou convertie en un Task à l’aide de AsTask.A ValueTask instance may either be awaited or converted to a Task using AsTask. Un ValueTask instance peut uniquement être attendue qu’une seule fois, et les consommateurs ne peuvent pas appeler GetAwaiter() jusqu'à ce que l’instance est terminée.A ValueTask instance may only be awaited once, and consumers may not call GetAwaiter() until the instance has completed. Si ces limitations sont inacceptables, convertissez le ValueTask à un Task en appelant AsTask.If these limitations are unacceptable, convert the ValueTask to a Task by calling AsTask.

Les opérations suivantes ne doivent jamais être effectuées sur un ValueTask instance :The following operations should never be performed on a ValueTask instance:

  • En attente de l’instance plusieurs fois.Awaiting the instance multiple times.
  • Appelant AsTask plusieurs fois.Calling AsTask multiple times.
  • À l’aide de plusieurs de ces techniques pour consommer l’instance.Using more than one of these techniques to consume the instance.

Si vous procédez à un des éléments ci-dessus, les résultats sont indéfinis.If you do any of the above, the results are undefined.

Un ValueTask est une structure qui peut encapsuler soit un Task ou un IValueTaskSource instance.A ValueTask is a structure that can wrap either a Task or a IValueTaskSource instance. Retourner un ValueTask qui encapsule un IValueTaskSource instance à partir d’une méthode asynchrone permet des applications à débit élevé éviter les allocations à l’aide d’un pool de réutilisable IValueTaskSource objets.Returning a ValueTask that wraps a IValueTaskSource instance from an asynchronous method enables high-throughput applications to avoid allocations by using a pool of reusable IValueTaskSource objects. Pour plus d’informations, consultez comprendre le pourquoi, ces fonctionnalités et à quel moment a de ValueTask.For more information, see Understanding the Whys, Whats, and Whens of ValueTask.

À l’aide un ValueTask au lieu d’un Task présente une certaine surcharge.Using a ValueTask instead of a Task introduces some overhead. Étant donné que ValueTask est une structure avec plusieurs champs, retourner les résultats de la méthode de copier des données plus que le retour d’un seul Task référence.Because ValueTask is a structure with multiple fields, returning it from the method results in copying more data compared to returning a single Task reference. Par conséquent, il doit être le choix par défaut pour n’importe quelle méthode asynchrone qui ne retourne pas de résultat pour retourner un Task.As such, the default choice for any asynchronous method that does not return a result should be to return a Task. Uniquement si l’analyse des performances prouve utile doit un ValueTask plutôt qu’un Task.Only if performance analysis proves it worthwhile should a ValueTask be used instead of a Task. Le Task.CompletedTask propriété doit être utilisée pour transmettre un singleton terminé avec succès dans le cas où une méthode retournant un Task se termine de façon synchrone et avec succès.The Task.CompletedTask property should be used to hand back a successfully completed singleton in the case where a method returning a Task completes synchronously and successfully.

Notes

L’utilisation de la ValueTask type est pris en charge en commençant par C# 7.0 et n’est pas pris en charge par n’importe quelle version de Visual Basic.The use of the ValueTask type is supported starting with C# 7.0 and is not supported by any version of Visual Basic.

Constructeurs

ValueTask(Task) ValueTask(Task) ValueTask(Task) ValueTask(Task)

Initialise une nouvelle instance de la classe ValueTask en utilisant la tâche fournie qui représente l’opération.Initializes a new instance of the ValueTask class using the supplied task that represents the operation.

ValueTask(IValueTaskSource, Int16) ValueTask(IValueTaskSource, Int16) ValueTask(IValueTaskSource, Int16) ValueTask(IValueTaskSource, Int16)

Initialise une nouvelle instance de la classe ValueTask en utilisant l’objet IValueTaskSource fourni qui représente l’opération.Initializes a new instance of the ValueTask class using the supplied IValueTaskSource object that represents the operation.

Propriétés

IsCanceled IsCanceled IsCanceled IsCanceled

Obtient une valeur qui indique si cet objet représente une opération annulée.Gets a value that indicates whether this object represents a canceled operation.

IsCompleted IsCompleted IsCompleted IsCompleted

Obtient une valeur qui indique si cet objet représente une opération accomplie.Gets a value that indicates whether this object represents a completed operation.

IsCompletedSuccessfully IsCompletedSuccessfully IsCompletedSuccessfully IsCompletedSuccessfully

Obtient une valeur qui indique si cet objet représente une opération réussie.Gets a value that indicates whether this object represents a successfully completed operation.

IsFaulted IsFaulted IsFaulted IsFaulted

Obtient une valeur qui indique si cet objet représente une opération ayant échoué.Gets a value that indicates whether this object represents a failed operation.

Méthodes

AsTask() AsTask() AsTask() AsTask()

Récupère un objet Task qui représente ce ValueTask.Retrieves a Task object that represents this ValueTask.

ConfigureAwait(Boolean) ConfigureAwait(Boolean) ConfigureAwait(Boolean) ConfigureAwait(Boolean)

Configure un awaiter pour cette valeur.Configures an awaiter for this value.

Equals(Object) Equals(Object) Equals(Object) Equals(Object)

Détermine si l'objet spécifié est égal à l'instance ValueTask actuelle.Determines whether the specified object is equal to the current ValueTask instance.

Equals(ValueTask) Equals(ValueTask) Equals(ValueTask) Equals(ValueTask)

Détermine si l'objet ValueTask spécifié est égal à l'objet ValueTask en cours.Determines whether the specified ValueTask object is equal to the current ValueTask object.

GetAwaiter() GetAwaiter() GetAwaiter() GetAwaiter()

Crée un awaiter pour cette valeur.Creates an awaiter for this value.

GetHashCode() GetHashCode() GetHashCode() GetHashCode()

Retourne le code de hachage de cette instance.Returns the hash code for this instance.

Preserve() Preserve() Preserve() Preserve()

Obtient un ValueTask qui peut être utilisé à tout moment dans le futur.Gets a ValueTask that may be used at any point in the future.

Opérateurs

Equality(ValueTask, ValueTask) Equality(ValueTask, ValueTask) Equality(ValueTask, ValueTask) Equality(ValueTask, ValueTask)

Compare si deux valeurs ValueTask sont égales.Compares two ValueTask values for equality.

Inequality(ValueTask, ValueTask) Inequality(ValueTask, ValueTask) Inequality(ValueTask, ValueTask) Inequality(ValueTask, ValueTask)

Détermine si deux valeurs ValueTask sont inégales.Determines whether two ValueTask values are unequal.

S’applique à