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 di può essere attesa o convertita in un Task oggetto utilizzando 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 un oggetto ValueTaskTask chiamando AsTask.
Le operazioni seguenti non devono mai essere eseguite su un'istanza ValueTask di :
- Attesa dell'istanza più volte.
- Chiamata AsTask più volte.
- Uso di più di una di queste tecniche per utilizzare l'istanza.
Se si esegue una delle operazioni precedenti, i risultati non sono definiti.
È ValueTask una struttura che può eseguire il wrapping di un oggetto Task o di un'istanza IValueTaskSource di . La restituzione di un oggetto ValueTask che esegue il wrapping di un'istanza IValueTaskSource da un metodo asincrono consente alle applicazioni a velocità effettiva elevata di evitare allocazioni usando un pool di oggetti riutilizzabili IValueTaskSource . Per altre informazioni, vedi Understanding the Whys, Whats, and when's of ValueTask.For more information, see Understanding the Whys, Whats, and when's of ValueTask.
L'uso di un ValueTask anziché di un Task comporta 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 la restituzione di un oggetto Task. Solo se l'analisi delle prestazioni dimostra che è utile usare anziché ValueTask .Task La Task.CompletedTask proprietà deve essere utilizzata per eseguire il handback di un singleton completato correttamente nel caso in cui un metodo restituisca un Task oggetto completato in modo sincrono e corretto.
Note
L'uso del tipo ValueTask è supportato a partire da C# 7.0 e non è supportato da alcuna versione di Visual Basic.
Note
Un'istanza creata con il costruttore senza parametri o dalla default(ValueTask) sintassi (una struttura inizializzata zero) rappresenta un'operazione completata in modo sincrono.
Costruttori
| Nome | Descrizione |
|---|---|
| ValueTask(IValueTaskSource, Int16) |
Inizializza una nuova istanza della ValueTask classe utilizzando l'oggetto fornito IValueTaskSource che rappresenta l'operazione. |
| ValueTask(Task) |
Inizializza una nuova istanza della ValueTask classe utilizzando l'attività fornita che rappresenta l'operazione. |
Proprietà
| Nome | Descrizione |
|---|---|
| IsCanceled |
Ottiene un valore che indica se questo oggetto rappresenta un'operazione annullata. |
| IsCompleted |
Ottiene un valore che indica se questo 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
| Nome | Descrizione |
|---|---|
| AsTask() |
Recupera un Task oggetto che rappresenta l'oggetto ValueTask. |
| ConfigureAwait(Boolean) |
Configura un awaiter per questo valore. |
| Equals(Object) |
Determina se l'oggetto specificato è uguale all'istanza corrente ValueTask . |
| Equals(ValueTask) |
Determina se l'oggetto specificato ValueTask è uguale all'oggetto corrente ValueTask . |
| GetAwaiter() |
Crea un awaiter per questo valore. |
| GetHashCode() |
Restituisce il codice hash per questa istanza. |
| Preserve() |
Ottiene un ValueTask oggetto che può essere utilizzato in qualsiasi momento in futuro. |
Operatori
| Nome | Descrizione |
|---|---|
| Equality(ValueTask, ValueTask) |
Confronta due ValueTask valori per verificare l'uguaglianza. |
| Inequality(ValueTask, ValueTask) |
Determina se due ValueTask valori sono diversi. |