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

Un' ValueTask istanza può essere attesa o convertita in un oggetto Task utilizzando AsTask.A ValueTask instance may either be awaited or converted to a Task using AsTask. Un' ValueTask istanza può essere attesa solo una volta e gli utenti potrebbero non chiamare GetAwaiter() finché l'istanza non è stata completata.A ValueTask instance may only be awaited once, and consumers may not call GetAwaiter() until the instance has completed. Se queste limitazioni non sono accettabili, convertire l' ValueTask oggetto in Task un oggetto AsTaskchiamando.If these limitations are unacceptable, convert the ValueTask to a Task by calling AsTask.

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

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

Se si esegue una delle operazioni descritte in precedenza, i risultati non sono definiti.If you do any of the above, the results are undefined.

Un ValueTask oggetto è una struttura in grado di eseguire Task il wrapping IValueTaskSource di un'istanza di o di.A ValueTask is a structure that can wrap either a Task or a IValueTaskSource instance. La restituzione di un ValueTask oggetto IValueTaskSource che esegue il wrapping di un'istanza da un metodo asincrono consente alle applicazioni a velocità effettiva elevata di evitare allocazioni utilizzando un pool di oggetti riutilizzabili 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. Per ulteriori informazioni, vedere l'articolo relativo a come, cosa accade e quando è di ValueTask.For more information, see Understanding the Whys, Whats, and Whens of ValueTask.

Se si ValueTask usa un anziché Task un, viene introdotto un sovraccarico.Using a ValueTask instead of a Task introduces some overhead. Poiché ValueTask è una struttura con più campi, la relativa restituzione dal metodo comporta la 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, la scelta predefinita per qualsiasi metodo asincrono che non restituisce un risultato deve essere restituire Task.As such, the default choice for any asynchronous method that does not return a result should be to return a Task. Solo se l'analisi delle prestazioni dimostra che vale la ValueTask pena usare un oggetto anziché Taskun oggetto.Only if performance analysis proves it worthwhile should a ValueTask be used instead of a Task. La Task.CompletedTask proprietà deve essere utilizzata per restituire un singleton completato correttamente nel caso in cui un metodo che restituisce un Task oggetto venga completato in modo sincrono e correttamente.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'uso del ValueTask tipo è supportato a partire da C# 7,0 e non è supportato da alcuna 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