ValueTask Estructura
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
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
- 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() | |
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. |