ValueTask Struktur

Definition

Bietet ein erwartbares Ergebnis eines asynchronen Vorgangs.

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)
Vererbung
ValueTask
Implementiert

Hinweise

Eine ValueTask Instanz kann entweder warten oder in eine Task Verwendung AsTaskkonvertiert werden. Eine ValueTask Instanz kann nur einmal erwartet werden, und Verbraucher können erst anrufen GetAwaiter() , wenn die Instanz abgeschlossen ist. Wenn diese Einschränkungen inakzeptabel sind, konvertieren Sie die ValueTask Durchrufe AsTaskin eine Task .

Die folgenden Vorgänge sollten niemals in einer ValueTask Instanz ausgeführt werden:

  • Die Instanz wird mehrmals erwartet.
  • Mehrere Male anrufen AsTask .
  • Verwenden sie mehrere dieser Techniken, um die Instanz zu nutzen.

Wenn Sie eines der oben genannten Aktionen ausführen, werden die Ergebnisse nicht definiert.

A ValueTask ist eine Struktur, die entweder eine oder eine Task IValueTaskSource Instanz umschließen kann. Durch das Zurückgeben einer ValueTask Instanz aus einer IValueTaskSource asynchronen Methode können Anwendungen mit hohem Durchsatz Zuweisungen mithilfe eines Pools wiederverwendbarer IValueTaskSource Objekte vermieden werden. Weitere Informationen finden Sie unter Understanding the Whys, Whats, and when's of ValueTask.

Die Verwendung eines ValueTask Anstelles Task führt zu einem zusätzlichen Aufwand. Da ValueTask es sich um eine Struktur mit mehreren Feldern handelt, führt die Rückgabe aus der Methode zum Kopieren weiterer Daten im Vergleich zum Zurückgeben eines einzelnen Task Verweises. Daher sollte die Standardauswahl für eine asynchrone Methode, die kein Ergebnis zurückgibt, ein TaskErgebnis zurückgeben. Nur, wenn die Leistungsanalyse beweist, dass es lohnend ist, sollte anstelle ValueTask einer Task. Die Task.CompletedTask Eigenschaft sollte verwendet werden, um einen erfolgreich abgeschlossenen Singleton zurückzugeben, wenn eine Methode eine Task Abgeschlossene synchron und erfolgreich zurückgibt.

Hinweis

Die Verwendung des ValueTask Typs wird ab C# 7.0 unterstützt und wird von keiner Version von Visual Basic unterstützt.

Hinweis

Eine Instanz, die mit dem parameterlosen Konstruktor oder durch die default(ValueTask) Syntax (eine null initialisierte Struktur) erstellt wurde, stellt einen synchron abgeschlossenen Vorgang dar.

Konstruktoren

ValueTask(IValueTaskSource, Int16)

Initialisiert eine neue Instanz der ValueTask-Klasse unter Verwendung des angegebenen IValueTaskSource-Objekts, das den Vorgang darstellt.

ValueTask(Task)

Initialisiert eine neue Instanz der ValueTask-Klasse unter Verwendung des angegebenen Tasks, der den Vorgang darstellt.

Eigenschaften

CompletedTask

Ruft eine Aufgabe ab, die bereits erfolgreich abgeschlossen wurde.

IsCanceled

Ruft einen Wert ab, der angibt, ob dieses Objekt einen abgebrochenen Vorgang darstellt.

IsCompleted

Ruft einen Wert ab, der angibt, ob dieses Objekt einen abgeschlossenen Vorgang darstellt.

IsCompletedSuccessfully

Ruft einen Wert ab, der angibt, ob dieses Objekt einen erfolgreich abgeschlossenen Vorgang darstellt.

IsFaulted

Ruft einen Wert ab, der angibt, ob dieses Objekt einen fehlgeschlagenen Vorgang darstellt.

Methoden

AsTask()

Ruft ein Task-Objekt ab, das dieses ValueTask darstellt.

ConfigureAwait(Boolean)

Konfiguriert ein „awaiter“-Element für diesen Wert.

Equals(Object)

Bestimmt, ob das angegebene Objekt mit der aktuellen ValueTask-Instanz übereinstimmt.

Equals(ValueTask)

Bestimmt, ob das angegebene ValueTask-Objekt mit dem aktuellen ValueTask-Objekt identisch ist.

FromCanceled(CancellationToken)

Erstellt eine durch Abbruch abgeschlossene ValueTask mit dem angegebenen Abbruchtoken.

FromCanceled<TResult>(CancellationToken)

Erstellt eine durch Abbruch abgeschlossene ValueTask<TResult> mit dem angegebenen Abbruchtoken.

FromException(Exception)

Erstellt eine durch die angegebene Ausnahme abgeschlossene ValueTask.

FromException<TResult>(Exception)

Erstellt eine durch die angegebene Ausnahme abgeschlossene ValueTask<TResult>.

FromResult<TResult>(TResult)

Erstellt ein ValueTask<TResult>, die erfolgreich mit dem angegebenen Ergebnis abgeschlossen ist.

GetAwaiter()

Erstellt ein „awaiter“-Element für diesen Wert.

GetHashCode()

Gibt den Hashcode für diese Instanz zurück.

Preserve()

Ruft einen ValueTask ab, der an einem beliebigen Zeitpunkt in der Zukunft verwendet werden kann.

Operatoren

Equality(ValueTask, ValueTask)

Überprüft zwei ValueTask-Werte auf Gleichheit.

Inequality(ValueTask, ValueTask)

Bestimmt, ob zwei ValueTask-Werte ungleich sind.

Gilt für: