ValueTask ValueTask ValueTask ValueTask Struct

Definizione

Fornisce un risultato awaitable di un'operazione asincrona.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)
Ereditarietà
Implementazioni

Commenti

Oggetto ValueTask istanza può essere atteso o convertita in un Task usando AsTask.A ValueTask instance may either be awaited or converted to a Task using AsTask. Oggetto ValueTask istanza può essere atteso solo una volta e i consumer non possono chiamare GetAwaiter() fino a quando l'istanza è stata completata.A ValueTask instance may only be awaited once, and consumers may not call GetAwaiter() until the instance has completed. Se queste limitazioni sono inaccettabili, convertire le ValueTask a un Task chiamando AsTask.If these limitations are unacceptable, convert the ValueTask to a Task by calling AsTask.

Le operazioni seguenti non devono mai essere eseguite su un ValueTask istanza:The following operations should never be performed on a ValueTask instance:

  • In attesa l'istanza più volte.Awaiting the instance multiple times.
  • La chiamata AsTask più volte.Calling AsTask multiple times.
  • Utilizzando più di una di queste tecniche per utilizzare l'istanza.Using more than one of these techniques to consume the instance.

Se si esegue una delle precedenti, i risultati sono indefiniti.If you do any of the above, the results are undefined.

Un ValueTask è una struttura che può eseguire il wrapping di un Task o un IValueTaskSource istanza.A ValueTask is a structure that can wrap either a Task or a IValueTaskSource instance. Restituzione di un ValueTask che esegue il wrapping di un IValueTaskSource istanza da un metodo asincrono consente alle applicazioni con velocità effettiva elevata evitare allocazioni utilizza un pool di riutilizzabile IValueTaskSource oggetti.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. Per altre informazioni, vedere comprendere l'ottimali, novità e quando ha di ValueTask.For more information, see Understanding the Whys, Whats, and Whens of ValueTask.

Usando un ValueTask anziché un Task introduce un sovraccarico.Using a ValueTask instead of a Task introduces some overhead. In quanto ValueTask è una struttura con più campi, restituirlo dai risultati del metodo nella copia di più dati rispetto alla restituzione di un singolo Task riferimento.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. Di conseguenza, deve essere la scelta predefinita per qualsiasi metodo asincrono non restituisce un risultato da restituire un Task.As such, the default choice for any asynchronous method that does not return a result should be to return a Task. Necessario solo se l'analisi delle prestazioni dimostra utile un ValueTask anziché un Task.Only if performance analysis proves it worthwhile should a ValueTask be used instead of a Task. Il Task.CompletedTask proprietà deve essere usata a restituire un singleton completato correttamente nel caso in cui un metodo restituendo un Task viene completata in modo sincrono e completata.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.

Nota

L'utilizzo dei ValueTask tipo è supportato a partire da C# 7.0 e non è supportato da qualsiasi versione di 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.

Costruttori

ValueTask(Task) ValueTask(Task) ValueTask(Task) ValueTask(Task)

Inizializza una nuova istanza della classe ValueTask usando l'attività specificata che rappresenta l'operazione.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)

Inizializza una nuova istanza della classe ValueTask usando l'oggetto IValueTaskSource specificato che rappresenta l'operazione.Initializes a new instance of the ValueTask class using the supplied IValueTaskSource object that represents the operation.

Proprietà

IsCanceled IsCanceled IsCanceled IsCanceled

Ottiene un valore che indica se l'oggetto rappresenta un'operazione annullata.Gets a value that indicates whether this object represents a canceled operation.

IsCompleted IsCompleted IsCompleted IsCompleted

Ottiene un valore che indica se l'oggetto rappresenta un'operazione completata.Gets a value that indicates whether this object represents a completed operation.

IsCompletedSuccessfully IsCompletedSuccessfully IsCompletedSuccessfully IsCompletedSuccessfully

Ottiene un valore che indica se l'oggetto rappresenta un'operazione completata correttamente.Gets a value that indicates whether this object represents a successfully completed operation.

IsFaulted IsFaulted IsFaulted IsFaulted

Ottiene un valore che indica se l'oggetto rappresenta un'operazione non riuscita.Gets a value that indicates whether this object represents a failed operation.

Metodi

AsTask() AsTask() AsTask() AsTask()

Recupera un oggetto Task che rappresenta questo ValueTask.Retrieves a Task object that represents this ValueTask.

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

Configura un elemento awaiter per questo valore.Configures an awaiter for this value.

Equals(Object) Equals(Object) Equals(Object) Equals(Object)

Determina se l'oggetto specificato è uguale all'istanza corrente della classe ValueTask.Determines whether the specified object is equal to the current ValueTask instance.

Equals(ValueTask) Equals(ValueTask) Equals(ValueTask) Equals(ValueTask)

Determina se l'oggetto ValueTask specificato equivale all'oggetto ValueTask corrente.Determines whether the specified ValueTask object is equal to the current ValueTask object.

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

Crea un elemento awaiter per questo valore.Creates an awaiter for this value.

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

Restituisce il codice hash per l'istanza.Returns the hash code for this instance.

Preserve() Preserve() Preserve() Preserve()

Ottiene un oggetto ValueTask che può essere usato in qualsiasi momento nel futuro.Gets a ValueTask that may be used at any point in the future.

Operatori

Equality(ValueTask, ValueTask) Equality(ValueTask, ValueTask) Equality(ValueTask, ValueTask) Equality(ValueTask, ValueTask)

Confronta due oggetti ValueTask per stabilirne l'uguaglianza dei valori.Compares two ValueTask values for equality.

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

Determina se due valori ValueTask sono diversi.Determines whether two ValueTask values are unequal.

Si applica a