ValueTask Estructura
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 en Task 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, convierta el ValueTask en un llamando a Task AsTask .If these limitations are unacceptable, convert the ValueTask to a Task by calling AsTask.
Las siguientes operaciones no deben realizarse nunca en una ValueTask 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 instancia de o IValueTaskSource .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 de un Task presenta cierta sobrecarga.Using a ValueTask instead of a Task introduces some overhead. Dado que ValueTask es una estructura con varios campos, la devolución del método provoca la copia de más datos en comparación con la devolución de una sola Task 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 la pena ValueTask usar en lugar de un Task .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 devuelva se complete de forma Task 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 partir de C# 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.
Nota
Una instancia creada con el constructor sin parámetros o por la default(ValueTask) sintaxis (una estructura inicializada en cero) representa una operación completada correctamente.An instance created with the parameterless constructor or by the default(ValueTask) syntax (a zero-initialized structure) represents a synchronously, successfully completed operation.
Constructores
| 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. |
| 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. |
Propiedades
| CompletedTask |
Obtiene una tarea que ya ha finalizado correctamente.Gets a task that has already completed successfully. |
| 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 |
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 |
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 |
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() |
Recupera un objeto Task que representa este ValueTask.Retrieves a Task object that represents this ValueTask. |
| ConfigureAwait(Boolean) |
Configura un elemento que ejecuta await para este valor.Configures an awaiter for this value. |
| 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) |
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. |
| FromCanceled(CancellationToken) |
Crea un elemento ValueTask que se finaliza debido a la cancelación con el token de cancelación especificado.Creates a ValueTask that has completed due to cancellation with the specified cancellation token. |
| FromCanceled<TResult>(CancellationToken) |
Crea un elemento ValueTask<TResult> que se finaliza debido a la cancelación con el token de cancelación especificado.Creates a ValueTask<TResult> that has completed due to cancellation with the specified cancellation token. |
| FromException(Exception) |
Crea un elemento ValueTask que se finaliza con la excepción especificada.Creates a ValueTask that has completed with the specified exception. |
| FromException<TResult>(Exception) |
Crea un elemento ValueTask<TResult> que se finaliza con la excepción especificada.Creates a ValueTask<TResult> that has completed with the specified exception. |
| FromResult<TResult>(TResult) |
Crea un objeto ValueTask<TResult> que se ha completado correctamente con el resultado especificado.Creates a ValueTask<TResult> that's completed successfully with the specified result. |
| GetAwaiter() |
Crea un objeto que ejecuta await para este objeto awaitable.Creates an awaiter for this value. |
| GetHashCode() |
Devuelve el código hash de esta instancia.Returns the hash code for this instance. |
| 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) |
Compara dos valores de ValueTask para determinar si son iguales.Compares two ValueTask values for equality. |
| Inequality(ValueTask, ValueTask) |
Determina si dos valores ValueTask son desiguales.Determines whether two ValueTask values are unequal. |