Teilen über


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 erwartet oder mit AsTaskin eine Task konvertiert werden. Eine ValueTask Instanz kann nur einmal erwartet werden, und Consumer können erst aufrufen GetAwaiter() , wenn die Instanz abgeschlossen ist. Wenn diese Einschränkungen inakzeptabel sind, konvertieren Sie in ValueTask ein, Task indem Sie aufrufen AsTask.

Die folgenden Vorgänge sollten niemals für eine ValueTask -Instanz ausgeführt werden:

  • Mehrfaches Warten auf die Instanz.
  • Mehrfaches Aufrufen AsTask .
  • Verwenden sie mehr als eine dieser Techniken, um die -Instanz zu nutzen.

Wenn Sie eines der oben genannten Schritte ausführen, sind die Ergebnisse nicht definiert.

Ein ValueTask ist eine Struktur, die entweder eine - oder eine IValueTaskSourceTask -Instanz umschließen kann. Wenn Sie eine ValueTask zurückgeben, die eine IValueTaskSource Instanz aus einer asynchronen Methode umschließt, können Anwendungen mit hohem Durchsatz Zuordnungen vermeiden, indem sie einen Pool wiederverwendbarer IValueTaskSource Objekte verwenden. Weitere Informationen finden Sie unter Grundlegendes zu den Gründen, Zugängen und Zeitpunkten von ValueTask.

Die Verwendung eines ValueTask anstelle von führt zu einem Task gewissen Mehraufwand. Da ValueTask eine Struktur mit mehreren Feldern ist, führt die Rückgabe aus der -Methode zum Kopieren von mehr Daten im Vergleich zur Rückgabe eines einzelnen Task Verweises. Daher sollte die Standardoption für jede asynchrone Methode, die kein Ergebnis zurückgibt, darin sein, eine Taskzurückzugeben. Nur wenn sich die Leistungsanalyse als sinnvoll erweist, sollte anstelle von verwendet ValueTaskTaskwerden. Die Task.CompletedTask -Eigenschaft sollte verwendet werden, um ein erfolgreich abgeschlossenes Singleton zurückzugeben, wenn eine Methode, die eine Task zurückgibt, synchron und erfolgreich abgeschlossen wird.

Hinweis

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

Hinweis

Eine Instanz, die mit dem parameterlosen Konstruktor oder mit der default(ValueTask) Syntax (einer nullinitialisierten Struktur) erstellt wurde, stellt einen synchronen, erfolgreich 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: