ValueTask Struct
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
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à
- 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 ValueTask
Task 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() | |
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. |