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 esperado 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 puede esperarse o convertirse en mediante TaskAsTask. Una ValueTask instancia solo se puede esperar una vez y los consumidores no pueden llamar 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 a AsTask varias 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 a las aplicaciones de alto rendimiento evitar asignaciones mediante un grupo de objetos reutilizables IValueTaskSource . Para obtener más información, vea Descripción de los motivos, whats y when's of ValueTask.
El uso de en ValueTask lugar de introduce Task cierta sobrecarga. Dado ValueTask que es una estructura con varios campos, devolverlo del 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 ValueTask pena usarse en lugar de .Task La Task.CompletedTask propiedad debe utilizarse para devolver un singleton completado correctamente en el caso de que un método devuelva un Task objeto completado de forma sincrónica y correcta.
Note
El uso del tipo ValueTask se admite a partir de C# 7.0 y no es compatible con ninguna versión de Visual Basic.
Note
Una instancia creada con el constructor sin parámetros o por la default(ValueTask) sintaxis (una estructura inicializada sin cero) representa una operación sincrónica y completada correctamente.
Constructores
| Nombre | Description |
|---|---|
| ValueTask(IValueTaskSource, Int16) |
Inicializa una nueva instancia de la ValueTask clase utilizando el objeto proporcionado IValueTaskSource que representa la operación. |
| ValueTask(Task) |
Inicializa una nueva instancia de la ValueTask clase utilizando la tarea proporcionada que representa la operación. |
Propiedades
| Nombre | Description |
|---|---|
| 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
| Nombre | Description |
|---|---|
| AsTask() |
Recupera un Task objeto que representa este ValueTaskobjeto . |
| ConfigureAwait(Boolean) |
Configura un awaiter para este valor. |
| Equals(Object) |
Determina si el objeto especificado es igual a la instancia actual ValueTask . |
| Equals(ValueTask) |
Determina si el objeto especificado ValueTask es igual al objeto actual ValueTask . |
| GetAwaiter() |
Crea un awaiter para este valor. |
| GetHashCode() |
Devuelve el código hash de esta instancia. |
| Preserve() |
Obtiene un ValueTask objeto que se puede usar en cualquier momento en el futuro. |
Operadores
| Nombre | Description |
|---|---|
| Equality(ValueTask, ValueTask) |
Compara dos ValueTask valores para la igualdad. |
| Inequality(ValueTask, ValueTask) |
Determina si dos ValueTask valores son distintos. |