Condividi tramite


ValueTask Struct

Definizione

Fornisce un risultato awaitable di un'operazione asincrona.

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)
Ereditarietà
ValueTask
Implementazioni

Commenti

Un'istanza ValueTask può essere attesa o convertita in un Task oggetto con AsTask. Un'istanza ValueTask può essere attesa una sola volta e i consumer potrebbero non chiamare GetAwaiter() fino al completamento dell'istanza. Se queste limitazioni non sono accettabili, convertire in ValueTask un Task oggetto chiamando AsTask.

Le operazioni seguenti non devono mai essere eseguite in un'istanza ValueTask :

  • Attesa dell'istanza più volte.
  • Chiamata AsTask più volte.
  • Uso di più di queste tecniche per usare l'istanza.

Se si esegue una delle operazioni precedenti, i risultati non sono definiti.

Un ValueTask oggetto è una struttura che può eseguire il wrapping di un'istanza Task o di un'istanza IValueTaskSource . La restituzione di un ValueTask oggetto che esegue il wrapping di un'istanza IValueTaskSource da un metodo asincrono consente alle applicazioni ad alta velocità effettiva di evitare allocazioni usando un pool di oggetti riutilizzabili IValueTaskSource . Per altre informazioni, vedere Informazioni sui motivi, Whats e quando è di ValueTask.

L'uso di un oggetto invece di un ValueTaskTask oggetto introduce un sovraccarico. Poiché ValueTask è una struttura con più campi, la restituzione dal metodo comporta la copia di più dati rispetto alla restituzione di un singolo Task riferimento. Di conseguenza, la scelta predefinita per qualsiasi metodo asincrono che non restituisce un risultato deve essere per restituire un Taskoggetto . Solo se l'analisi delle prestazioni dimostra che deve ValueTask essere usata invece di un Taskoggetto . La Task.CompletedTask proprietà deve essere usata per restituire un singleton completato correttamente nel caso in cui un metodo restituisca un Task metodo completa in modo sincrono e correttamente.

Nota

L'uso ValueTask del tipo è supportato a partire da C# 7.0 e non è supportato da alcuna versione di Visual Basic.

Nota

Un'istanza creata con il costruttore senza parametri o dalla default(ValueTask) sintassi (una struttura inizializzata zero) rappresenta un'operazione sincrona e completata correttamente.

Costruttori

ValueTask(IValueTaskSource, Int16)

Inizializza una nuova istanza della classe ValueTask usando l'oggetto IValueTaskSource specificato che rappresenta l'operazione.

ValueTask(Task)

Inizializza una nuova istanza della classe ValueTask usando l'attività specificata che rappresenta l'operazione.

Proprietà

CompletedTask

Ottiene un'attività già completata correttamente.

IsCanceled

Ottiene un valore che indica se l'oggetto rappresenta un'operazione annullata.

IsCompleted

Ottiene un valore che indica se l'oggetto rappresenta un'operazione completata.

IsCompletedSuccessfully

Ottiene un valore che indica se l'oggetto rappresenta un'operazione completata correttamente.

IsFaulted

Ottiene un valore che indica se l'oggetto rappresenta un'operazione non riuscita.

Metodi

AsTask()

Recupera un oggetto Task che rappresenta questo ValueTask.

ConfigureAwait(Boolean)

Configura un elemento awaiter per questo valore.

Equals(Object)

Determina se l'oggetto specificato è uguale all'istanza corrente della classe ValueTask.

Equals(ValueTask)

Determina se l'oggetto ValueTask specificato equivale all'oggetto ValueTask corrente.

FromCanceled(CancellationToken)

Crea un oggetto ValueTask che risulta completato a causa dell'annullamento con un token di annullamento specificato.

FromCanceled<TResult>(CancellationToken)

Crea un oggetto ValueTask<TResult> che risulta completato a causa dell'annullamento con un token di annullamento specificato.

FromException(Exception)

Crea un oggetto ValueTask che risulta completato con un'eccezione specificata.

FromException<TResult>(Exception)

Crea un oggetto ValueTask<TResult> che risulta completato con un'eccezione specificata.

FromResult<TResult>(TResult)

Crea un ValueTask<TResult> che viene completato correttamente con il risultato specificato.

GetAwaiter()

Crea un elemento awaiter per questo valore.

GetHashCode()

Restituisce il codice hash per l'istanza.

Preserve()

Ottiene un oggetto ValueTask che può essere usato in qualsiasi momento nel futuro.

Operatori

Equality(ValueTask, ValueTask)

Confronta due oggetti ValueTask per stabilirne l'uguaglianza dei valori.

Inequality(ValueTask, ValueTask)

Determina se due valori ValueTask sono diversi.

Si applica a