ValueTask Estrutura

Definição

Fornece um resultado esperado de uma operação assíncrona.

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)
Herança
ValueTask
Implementações

Comentários

Uma ValueTask instância pode ser aguardada ou convertida em um Task uso AsTask. 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. Se essas limitações forem inaceitáveis, converta-a ValueTask em uma Task chamada AsTask.

As seguintes operações nunca devem ser executadas em uma ValueTask instância:

  • Aguardando a instância várias vezes.
  • Chamando AsTask várias vezes.
  • Usando mais de uma dessas técnicas para consumir a instância.

Se você fizer qualquer um dos resultados acima, os resultados serão indefinidos.

Uma ValueTask é uma estrutura que pode encapsular uma Task ou uma IValueTaskSource instância. 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 . Para obter mais informações, consulte Understanding the Whys, Whats, and when's of ValueTask.

Usar um ValueTask em vez de um Task apresenta alguma sobrecarga. Como ValueTask é uma estrutura com vários campos, retornar do método resulta na cópia de mais dados em comparação com o retorno de uma única Task referência. Dessa forma, a opção padrão para qualquer método assíncrono que não retorna um resultado deve ser retornar um Task. Somente se a análise de desempenho provar que ela vale a pena deve ValueTask ser usada em vez de uma Task. A Task.CompletedTask propriedade deve ser usada para devolver um singleton concluído com êxito no caso em que um método retornando uma Task conclusão síncrona e com êxito.

Observação

O uso do ValueTask tipo tem suporte a partir do C# 7.0 e não tem suporte para nenhuma versão do Visual Basic.

Observação

Uma instância criada com o construtor sem parâmetros ou pela default(ValueTask) sintaxe (uma estrutura inicializada zero) representa uma operação síncrona e concluída com êxito.

Construtores

ValueTask(IValueTaskSource, Int16)

Inicializa uma nova instância da classe ValueTask usando o objeto fornecido IValueTaskSource que representa a operação.

ValueTask(Task)

Inicializa uma nova instância da classe ValueTask usando a tarefa fornecida que representa a operação.

Propriedades

CompletedTask

Obtém uma tarefa que já foi concluída com êxito.

IsCanceled

Obtém um valor que indica se este objeto representa uma operação cancelada.

IsCompleted

Obtém um valor que indica se este objeto representa uma operação concluída.

IsCompletedSuccessfully

Obtém um valor que indica se este objeto representa uma operação concluída com êxito.

IsFaulted

Obtém um valor que indica se este objeto representa uma operação com falha.

Métodos

AsTask()

Recupera um objeto Task que representa este ValueTask.

ConfigureAwait(Boolean)

Configura um awaiter para esse valor.

Equals(Object)

Determina se o objeto especificado é igual à instância de ValueTask atual.

Equals(ValueTask)

Determina se o objeto ValueTask especificado é igual ao objeto ValueTask atual.

FromCanceled(CancellationToken)

Cria um ValueTask que foi concluído devido ao cancelamento com o token de cancelamento especificado.

FromCanceled<TResult>(CancellationToken)

Cria um ValueTask<TResult> que foi concluído devido ao cancelamento com o token de cancelamento especificado.

FromException(Exception)

Cria um ValueTask que foi concluído com a exceção especificada.

FromException<TResult>(Exception)

Cria um ValueTask<TResult> que foi concluído com a exceção especificada.

FromResult<TResult>(TResult)

Cria um ValueTask<TResult> que é concluído com êxito com o resultado especificado.

GetAwaiter()

Cria um awaiter para esse valor.

GetHashCode()

Retorna o código hash para a instância.

Preserve()

Obtém uma ValueTask que pode ser usada em qualquer momento no futuro.

Operadores

Equality(ValueTask, ValueTask)

Comparar a igualdade de dois valores ValueTask.

Inequality(ValueTask, ValueTask)

Determina se dois valores ValueTask são diferentes.

Aplica-se a