ValueTask ValueTask ValueTask ValueTask Struct

Definición

Proporciona un resultado esperable de una operación asincrónica.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)
Herencia
Implementaciones

Comentarios

Una ValueTask instancia se puede esperar o convertir Task en mediante AsTask.A ValueTask instance may either be awaited or converted to a Task using AsTask. Una ValueTask instancia solo se puede esperar una vez y los consumidores no pueden llamar GetAwaiter() hasta que la instancia se ha completado.A ValueTask instance may only be awaited once, and consumers may not call GetAwaiter() until the instance has completed. Si estas limitaciones son inaceptables, ValueTask convierta Task el en AsTaskun llamando a.If these limitations are unacceptable, convert the ValueTask to a Task by calling AsTask.

Las siguientes operaciones no deben realizarse nunca en ValueTask una instancia de:The following operations should never be performed on a ValueTask instance:

  • Esperando la instancia varias veces.Awaiting the instance multiple times.
  • Llamada AsTask varias veces.Calling AsTask multiple times.
  • Usar más de una de estas técnicas para consumir la instancia.Using more than one of these techniques to consume the instance.

Si realiza alguna de las anteriores, los resultados son indefinidos.If you do any of the above, the results are undefined.

Una ValueTask es una estructura que puede incluir una Task IValueTaskSource instancia de o.A ValueTask is a structure that can wrap either a Task or a IValueTaskSource instance. Devolver un ValueTask que contiene una IValueTaskSource instancia de un método asincrónico permite a las aplicaciones de alto rendimiento evitar asignaciones mediante un grupo de objetos reutilizables IValueTaskSource .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. Para obtener más información, vea Descripción de Whys, What y When of ValueTask.For more information, see Understanding the Whys, Whats, and Whens of ValueTask.

El uso ValueTask de un en lugar Task de un presenta cierta sobrecarga.Using a ValueTask instead of a Task introduces some overhead. Dado ValueTask que es una estructura con varios campos, la devolución del método provoca la copia de más datos en comparación con la Task devolución de una sola referencia.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. Como tal, la opción predeterminada para cualquier método asincrónico que no devuelve un resultado debe ser devolver Task.As such, the default choice for any asynchronous method that does not return a result should be to return a Task. Solo si el análisis de rendimiento demuestra que merece ValueTask la pena usar en lugar de Taskun.Only if performance analysis proves it worthwhile should a ValueTask be used instead of a Task. La Task.CompletedTask propiedad se debe usar para revertir un singleton completado correctamente en caso de que un método que Task devuelva se complete de forma sincrónica y correcta.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.

Nota

El uso del ValueTask tipo se admite a C# partir de 7,0 y no es compatible con ninguna versión 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.

Constructores

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

Inicializa una nueva instancia de la clase ValueTask usando la tarea suministrada que representa la operación.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)

Inicializa una nueva instancia de la clase ValueTask mediante el objeto IValueTaskSource suministrado que representa la operación.Initializes a new instance of the ValueTask class using the supplied IValueTaskSource object that represents the operation.

Propiedades

IsCanceled IsCanceled IsCanceled IsCanceled

Obtiene un valor que indica si este objeto representa una operación cancelada.Gets a value that indicates whether this object represents a canceled operation.

IsCompleted IsCompleted IsCompleted IsCompleted

Obtiene un valor que indica si este objeto representa una operación completada.Gets a value that indicates whether this object represents a completed operation.

IsCompletedSuccessfully IsCompletedSuccessfully IsCompletedSuccessfully IsCompletedSuccessfully

Obtiene un valor que indica si este objeto representa una operación completada correctamente.Gets a value that indicates whether this object represents a successfully completed operation.

IsFaulted IsFaulted IsFaulted IsFaulted

Obtiene un valor que indica si este objeto representa una operación con error.Gets a value that indicates whether this object represents a failed operation.

Métodos

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

Recupera un objeto Task que representa este ValueTask.Retrieves a Task object that represents this ValueTask.

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

Configura un elemento que ejecuta await para este valor.Configures an awaiter for this value.

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

Determina si el objeto especificado es igual que la instancia de la clase ValueTask actual.Determines whether the specified object is equal to the current ValueTask instance.

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

Determina si el objeto ValueTask especificado es igual al objeto ValueTask actual.Determines whether the specified ValueTask object is equal to the current ValueTask object.

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

Crea un objeto que ejecuta await para este objeto awaitable.Creates an awaiter for this value.

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

Devuelve el código hash de esta instancia.Returns the hash code for this instance.

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

Obtiene un ValueTask que se puede usar en cualquier momento en el futuro.Gets a ValueTask that may be used at any point in the future.

Operadores

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

Compara dos valores de ValueTask para determinar si son iguales.Compares two ValueTask values for equality.

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

Determina si dos valores ValueTask son desiguales.Determines whether two ValueTask values are unequal.

Se aplica a