ValueTask Struktur
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
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
- 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 ValueTask
Taskwerden. 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() | |
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. |