ValueTask Estrutura

Definição

Fornece um resultado esperado de uma operação assíncrona.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)
Herança
ValueTask
Implementações

Comentários

A ValueTask instance may either be awaited or converted to a <xref:System.Threading.Tasks.Task> using <xref:System.Threading.Tasks.ValueTask.AsTask%2A>. Uma ValueTask instância só pode ser aguardada uma vez e os consumidores podem não chamar GetAwaiter() até que a instância seja concluída.A ValueTask instance may only be awaited once, and consumers may not call GetAwaiter() until the instance has completed. Se essas limitações forem inaceitáveis, converta o ValueTask em a Task chamando AsTask .If these limitations are unacceptable, convert the ValueTask to a Task by calling AsTask.

As operações a seguir nunca devem ser executadas em uma ValueTask instância do:The following operations should never be performed on a ValueTask instance:

  • Aguardando a instância várias vezes.Awaiting the instance multiple times.
  • Chamando AsTask várias vezes.Calling AsTask multiple times.
  • Usando mais de uma dessas técnicas para consumir a instância.Using more than one of these techniques to consume the instance.

Se você fizer qualquer uma das opções acima, os resultados serão indefinidos.If you do any of the above, the results are undefined.

Um ValueTask é uma estrutura que pode encapsular uma Task ou uma IValueTaskSource instância.A ValueTask is a structure that can wrap either a Task or a IValueTaskSource instance. Retornar um ValueTask que encapsula uma IValueTaskSource instância de um método assíncrono permite que aplicativos de alta taxa de transferência evitem alocações usando um pool de objetos reutilizáveis 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 obter mais informações, consulte noções básicas sobre porquês, o que e quando é de ValueTask.For more information, see Understanding the Whys, Whats, and Whens of ValueTask.

Usar um ValueTask em vez de um Task apresenta alguma sobrecarga.Using a ValueTask instead of a Task introduces some overhead. Como ValueTask é uma estrutura com vários campos, retorná-lo do método resulta na cópia de mais dados em comparação com o retorno de uma única Task referência.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, a escolha padrão para qualquer método assíncrono que não retorna um resultado deve ser retornar um Task .As such, the default choice for any asynchronous method that does not return a result should be to return a Task. Somente se a análise de desempenho provar que vale a pena deve ValueTask ser usada em vez de uma Task .Only if performance analysis proves it worthwhile should a ValueTask be used instead of a Task. A Task.CompletedTask propriedade deve ser usada para enviar de volta um singleton concluído com êxito no caso em que um método que retorna uma conclusão de forma Task síncrona e bem-sucedida.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.

Observação

O uso do ValueTask tipo tem suporte a partir do C# 7,0 e não tem suporte de nenhuma versão do 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.

Construtores

ValueTask(IValueTaskSource, Int16)

Inicializa uma nova instância da classe ValueTask usando o objeto fornecido IValueTaskSource que representa a operação.Initializes a new instance of the ValueTask class using the supplied IValueTaskSource object that represents the operation.

ValueTask(Task)

Inicializa uma nova instância da classe ValueTask usando a tarefa fornecida que representa a operação.Initializes a new instance of the ValueTask class using the supplied task that represents the operation.

Propriedades

CompletedTask

Obtém uma tarefa que já foi concluída com êxito.Gets a task that has already completed successfully.

IsCanceled

Obtém um valor que indica se este objeto representa uma operação cancelada.Gets a value that indicates whether this object represents a canceled operation.

IsCompleted

Obtém um valor que indica se este objeto representa uma operação concluída.Gets a value that indicates whether this object represents a completed operation.

IsCompletedSuccessfully

Obtém um valor que indica se este objeto representa uma operação concluída com êxito.Gets a value that indicates whether this object represents a successfully completed operation.

IsFaulted

Obtém um valor que indica se este objeto representa uma operação com falha.Gets a value that indicates whether this object represents a failed operation.

Métodos

AsTask()

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

ConfigureAwait(Boolean)

Configura um awaiter para esse valor.Configures an awaiter for this value.

Equals(Object)

Determina se o objeto especificado é igual à instância de ValueTask atual.Determines whether the specified object is equal to the current ValueTask instance.

Equals(ValueTask)

Determina se o objeto ValueTask especificado é igual ao objeto ValueTask atual.Determines whether the specified ValueTask object is equal to the current ValueTask object.

FromCanceled(CancellationToken)

Cria um ValueTask que foi concluído devido ao cancelamento com o token de cancelamento especificado.Creates a ValueTask that has completed due to cancellation with the specified cancellation token.

FromCanceled<TResult>(CancellationToken)

Cria um ValueTask<TResult> que foi concluído devido ao cancelamento com o token de cancelamento especificado.Creates a ValueTask<TResult> that has completed due to cancellation with the specified cancellation token.

FromException(Exception)

Cria um ValueTask que foi concluído com a exceção especificada.Creates a ValueTask that has completed with the specified exception.

FromException<TResult>(Exception)

Cria um ValueTask<TResult> que foi concluído com a exceção especificada.Creates a ValueTask<TResult> that has completed with the specified exception.

FromResult<TResult>(TResult)

Cria um ValueTask<TResult> que é concluído com êxito com o resultado especificado.Creates a ValueTask<TResult> that's completed successfully with the specified result.

GetAwaiter()

Cria um awaiter para esse valor.Creates an awaiter for this value.

GetHashCode()

Retorna o código hash para a instância.Returns the hash code for this instance.

Preserve()

Obtém uma ValueTask que pode ser usada em qualquer momento no futuro.Gets a ValueTask that may be used at any point in the future.

Operadores

Equality(ValueTask, ValueTask)

Comparar a igualdade de dois valores ValueTask.Compares two ValueTask values for equality.

Inequality(ValueTask, ValueTask)

Determina se dois valores ValueTask são diferentes.Determines whether two ValueTask values are unequal.

Aplica-se a