Compartir a través de


ValueTask Estructura

Definición

Proporciona un resultado esperable de una operación asincrónica.

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)
Herencia
ValueTask
Implementaciones

Comentarios

Una ValueTask instancia de puede esperarse o convertirse en mediante Task AsTask. Una ValueTask instancia solo se puede esperar una vez y es posible que los consumidores no llamen GetAwaiter() hasta que se haya completado la instancia. Si estas limitaciones son inaceptables, convierta en ValueTask a Task mediante una llamada a AsTask.

Las siguientes operaciones nunca se deben realizar en una ValueTask instancia de :

  • Esperando la instancia varias veces.
  • Llamar varias AsTask veces.
  • Usar más de una de estas técnicas para consumir la instancia.

Si hace alguna de las opciones anteriores, los resultados no están definidos.

Es ValueTask una estructura que puede encapsular una Task instancia de o IValueTaskSource . Devolver un ValueTask que encapsula una IValueTaskSource instancia de un método asincrónico permite que las aplicaciones de alto rendimiento eviten asignaciones mediante un grupo de objetos reutilizables IValueTaskSource . Para obtener más información, vea Descripción de los motivos, whats y when's de ValueTask.

El uso de en ValueTask lugar de introduce Task cierta sobrecarga. Dado ValueTask que es una estructura con varios campos, devolverlo desde el método da como resultado copiar más datos en comparación con devolver una sola Task referencia. Por lo tanto, la opción predeterminada para cualquier método asincrónico que no devuelva un resultado debe ser devolver un Task. Solo si el análisis de rendimiento demuestra que merece la pena usarse ValueTask en lugar de .Task La Task.CompletedTask propiedad debe utilizarse para devolver un singleton completado correctamente en caso de que un método devuelva un elemento Task completado de forma sincrónica y correcta.

Nota

El uso del tipo se admite a partir de ValueTask C# 7.0 y no es compatible con ninguna versión de Visual Basic.

Nota

Una instancia creada con el constructor sin parámetros o por la default(ValueTask) sintaxis (una estructura inicializada con cero) representa una operación completada correctamente de forma sincrónica.

Constructores

ValueTask(IValueTaskSource, Int16)

Inicializa una nueva instancia de la clase ValueTask mediante el objeto IValueTaskSource suministrado que representa la operación.

ValueTask(Task)

Inicializa una nueva instancia de la clase ValueTask usando la tarea suministrada que representa la operación.

Propiedades

CompletedTask

Obtiene una tarea que ya ha finalizado correctamente.

IsCanceled

Obtiene un valor que indica si este objeto representa una operación cancelada.

IsCompleted

Obtiene un valor que indica si este objeto representa una operación completada.

IsCompletedSuccessfully

Obtiene un valor que indica si este objeto representa una operación completada correctamente.

IsFaulted

Obtiene un valor que indica si este objeto representa una operación con error.

Métodos

AsTask()

Recupera un objeto Task que representa este ValueTask.

ConfigureAwait(Boolean)

Configura un elemento que ejecuta await para este valor.

Equals(Object)

Determina si el objeto especificado es igual que la instancia de la clase ValueTask actual.

Equals(ValueTask)

Determina si el objeto ValueTask especificado es igual al objeto ValueTask actual.

FromCanceled(CancellationToken)

Crea un elemento ValueTask que se finaliza debido a la cancelación con el token de cancelación especificado.

FromCanceled<TResult>(CancellationToken)

Crea un elemento ValueTask<TResult> que se finaliza debido a la cancelación con el token de cancelación especificado.

FromException(Exception)

Crea un elemento ValueTask que se finaliza con la excepción especificada.

FromException<TResult>(Exception)

Crea un elemento ValueTask<TResult> que se finaliza con la excepción especificada.

FromResult<TResult>(TResult)

Crea un objeto ValueTask<TResult> que se ha completado correctamente con el resultado especificado.

GetAwaiter()

Crea un objeto que ejecuta await para este objeto awaitable.

GetHashCode()

Devuelve el código hash de esta instancia.

Preserve()

Obtiene un ValueTask que se puede usar en cualquier momento en el futuro.

Operadores

Equality(ValueTask, ValueTask)

Compara dos valores de ValueTask para determinar si son iguales.

Inequality(ValueTask, ValueTask)

Determina si dos valores ValueTask son desiguales.

Se aplica a