ValueTask ValueTask ValueTask ValueTask Struct

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
Implementações

Comentários

Uma ValueTask instância pode ser esperada ou convertida em um Task usando AsTask.A ValueTask instance may either be awaited or converted to a Task using AsTask. Uma ValueTask instância só pode ser aguardada uma vez e os consumidores podem não GetAwaiter() chamar 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, ValueTask Converta Task o em AsTaska chamando.If these limitations are unacceptable, convert the ValueTask to a Task by calling AsTask.

As operações a seguir nunca devem ser executadas em ValueTask uma 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 Task um 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 Task o retorno de uma única 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 ValueTask a pena deve ser usada Taskem vez de uma.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 Task retorna uma conclusão de forma 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 de C# 7,0 e não tem suporte em 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(Task) ValueTask(Task) ValueTask(Task) 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.

ValueTask(IValueTaskSource, Int16) ValueTask(IValueTaskSource, Int16) ValueTask(IValueTaskSource, Int16) 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.

Propriedades

IsCanceled IsCanceled IsCanceled 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 IsCompleted IsCompleted 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 IsCompletedSuccessfully IsCompletedSuccessfully 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 IsFaulted IsFaulted 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() AsTask() AsTask() AsTask()

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

ConfigureAwait(Boolean) ConfigureAwait(Boolean) ConfigureAwait(Boolean) ConfigureAwait(Boolean)

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

Equals(Object) Equals(Object) Equals(Object) 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) Equals(ValueTask) Equals(ValueTask) 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.

GetAwaiter() GetAwaiter() GetAwaiter() GetAwaiter()

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

GetHashCode() GetHashCode() GetHashCode() GetHashCode()

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

Preserve() Preserve() Preserve() 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) Equality(ValueTask, ValueTask) Equality(ValueTask, ValueTask) Equality(ValueTask, ValueTask)

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

Inequality(ValueTask, ValueTask) Inequality(ValueTask, ValueTask) Inequality(ValueTask, ValueTask) Inequality(ValueTask, ValueTask)

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

Aplica-se a