ValueTask Estrutura
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
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
- 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() | |
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. |