ValueTask Estrutura

Definição

Fornece um resultado aguardável 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

Observações

Uma ValueTask instância pode ser aguardada ou convertida em um Task usando AsTask. Uma ValueTask instância só pode ser aguardada uma vez, e os consumidores não podem ligar GetAwaiter() até que a instância esteja concluída. Se estas limitações forem inaceitáveis, converte o ValueTask para a Task chamando AsTask.

As seguintes operações nunca devem ser realizadas numa ValueTask instância:

  • Estou à espera da instância várias vezes.
  • Liguei AsTask várias vezes.
  • Usar mais do que uma destas técnicas para consumir a instância.

Se fizer qualquer uma das situações acima, os resultados ficam indefinidos.

A ValueTask é uma estrutura que pode envolver tanto a Task como uma IValueTaskSource instância. Devolver um ValueTask que envolve uma IValueTaskSource instância de um método assíncrono permite que aplicações de alto débito evitem alocações usando um conjunto de objetos reutilizáveis IValueTaskSource . Para mais informações, consulte Compreender os Porquês, Quais e Quando do ValueTask.

Usar um ValueTask em vez de um Task introduz algum overhead. Como ValueTask é uma estrutura com múltiplos campos, retorná-la do método resulta em copiar mais dados em comparação com devolver uma única Task referência. Assim, a escolha padrão para qualquer método assíncrono que não devolve um resultado deve ser devolver um Task. Só se a análise de desempenho provar que vale a pena deve ValueTask ser usada em vez de um Task. A Task.CompletedTask propriedade deve ser usada para devolver um singleton concluído com sucesso no caso em que um método que devolve a Task se complete de forma síncrona e bem-sucedida.

Note

O uso do tipo ValueTask é suportado a partir de C# 7.0 e não é suportado por nenhuma versão do Visual Basic.

Note

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

Construtores

Name Description
ValueTask(IValueTaskSource, Int16)

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

ValueTask(Task)

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

Propriedades

Name Description
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 sucesso.

IsFaulted

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

Métodos

Name Description
AsTask()

Recupera um Task objeto que representa este ValueTask.

ConfigureAwait(Boolean)

Configura um awaiter para este valor.

Equals(Object)

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

Equals(ValueTask)

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

GetAwaiter()

Cria um servidor para este valor.

GetHashCode()

Devolve o código de hash para esta instância.

Preserve()

Recebe um ValueTask que pode ser usado a qualquer momento no futuro.

Operadores

Name Description
Equality(ValueTask, ValueTask)

Compara dois ValueTask valores para igualdade.

Inequality(ValueTask, ValueTask)

Determina se dois ValueTask valores são desiguais.

Aplica-se a