ValueTask Struktur

Definition

Bietet ein erwartbares Ergebnis eines asynchronen Vorgangs.Provides an awaitable result of an asynchronous operation.

public value class ValueTask : IEquatable<System::Threading::Tasks::ValueTask>
public 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 gewartet oder mithilfe von in eine konvertiert werden Task AsTask .A ValueTask instance may either be awaited or converted to a Task using AsTask. Eine ValueTask -Instanz kann nur einmal gewartet werden, und Consumer können erst dann aufzurufen, wenn GetAwaiter() die Instanz abgeschlossen wurde.A ValueTask instance may only be awaited once, and consumers may not call GetAwaiter() until the instance has completed. Wenn diese Einschränkungen nicht zulässig sind, konvertieren ValueTask Sie den in einen, Task indem Sie aufrufen AsTask .If these limitations are unacceptable, convert the ValueTask to a Task by calling AsTask.

Die folgenden Vorgänge sollten nie auf einer-Instanz ausgeführt werden ValueTask :The following operations should never be performed on a ValueTask instance:

  • Mehrmals auf die Instanz warten.Awaiting the instance multiple times.
  • Mehrmals aufrufen AsTask .Calling AsTask multiple times.
  • Verwenden Sie mehr als eine dieser Techniken, um die-Instanz zu verwenden.Using more than one of these techniques to consume the instance.

Wenn Sie eine der oben genannten Aktionen ausführen, sind die Ergebnisse nicht definiert.If you do any of the above, the results are undefined.

Eine ValueTask ist eine-Struktur, die entweder eine- Task Instanz oder eine-Instanz einschließen kann IValueTaskSource .A ValueTask is a structure that can wrap either a Task or a IValueTaskSource instance. Wenn eine ValueTask -Instanz zurückgegeben wird, die eine- IValueTaskSource Instanz von einer asynchronen Methode umschließt, können Anwendungen mit hohem Durchsatz eine Zuordnung mit einem Pool wiederverwendbarer IValueTaskSource Objekte vermeiden.Returning a ValueTask that wraps a IValueTaskSource instance from an asynchronous method enables high-throughput applications to avoid allocations by using a pool of reusable IValueTaskSource objects. Weitere Informationen finden Sie unter Understanding the whys, whats, and What of valuetask.For more information, see Understanding the Whys, Whats, and Whens of ValueTask.

Die Verwendung eines ValueTask anstelle von Task führt zu einem gewissen Aufwand.Using a ValueTask instead of a Task introduces some overhead. Da ValueTask eine Struktur mit mehreren Feldern ist, führt die Rückgabe von der-Methode dazu, dass im Vergleich zum Zurückgeben eines einzelnen Verweises mehr Daten kopiert werden Task .Because ValueTask is a structure with multiple fields, returning it from the method results in copying more data compared to returning a single Task reference. Daher sollte die Standardauswahl für eine asynchrone Methode, die kein Ergebnis zurückgibt, ein zurückgeben Task .As such, the default choice for any asynchronous method that does not return a result should be to return a Task. Nur, wenn sich die Leistungsanalyse als lohnend erweist, sollte ValueTask anstelle eines verwendet werden Task .Only if performance analysis proves it worthwhile should a ValueTask be used instead of a Task. Die- Task.CompletedTask Eigenschaft sollte verwendet werden, um ein erfolgreich ausgefülltes Singleton zurückzugeben, wenn eine Methode, die zurückgibt, Task synchron und erfolgreich abgeschlossen wird.The Task.CompletedTask property should be used to hand back a successfully completed singleton in the case where a method returning a Task completes synchronously and successfully.

Hinweis

Die Verwendung des- ValueTask Typs wird ab c# 7,0 unterstützt und wird von keiner Version von Visual Basic unterstützt.The use of the ValueTask type is supported starting with C# 7.0 and is not supported by any version of Visual Basic.

Konstruktoren

ValueTask(IValueTaskSource, Int16)

Initialisiert eine neue Instanz der ValueTask-Klasse unter Verwendung des angegebenen IValueTaskSource-Objekts, das den Vorgang darstellt.Initializes a new instance of the ValueTask class using the supplied IValueTaskSource object that represents the operation.

ValueTask(Task)

Initialisiert eine neue Instanz der ValueTask-Klasse unter Verwendung des angegebenen Tasks, der den Vorgang darstellt.Initializes a new instance of the ValueTask class using the supplied task that represents the operation.

Eigenschaften

CompletedTask

Ruft eine Aufgabe ab, die bereits erfolgreich abgeschlossen wurde.Gets a task that has already completed successfully.

IsCanceled

Ruft einen Wert ab, der angibt, ob dieses Objekt einen abgebrochenen Vorgang darstellt.Gets a value that indicates whether this object represents a canceled operation.

IsCompleted

Ruft einen Wert ab, der angibt, ob dieses Objekt einen abgeschlossenen Vorgang darstellt.Gets a value that indicates whether this object represents a completed operation.

IsCompletedSuccessfully

Ruft einen Wert ab, der angibt, ob dieses Objekt einen erfolgreich abgeschlossenen Vorgang darstellt.Gets a value that indicates whether this object represents a successfully completed operation.

IsFaulted

Ruft einen Wert ab, der angibt, ob dieses Objekt einen fehlgeschlagenen Vorgang darstellt.Gets a value that indicates whether this object represents a failed operation.

Methoden

AsTask()

Ruft ein Task-Objekt ab, das dieses ValueTask darstellt.Retrieves a Task object that represents this ValueTask.

ConfigureAwait(Boolean)

Konfiguriert ein „awaiter“-Element für diesen Wert.Configures an awaiter for this value.

Equals(Object)

Bestimmt, ob das angegebene Objekt mit der aktuellen ValueTask-Instanz übereinstimmt.Determines whether the specified object is equal to the current ValueTask instance.

Equals(ValueTask)

Bestimmt, ob das angegebene ValueTask-Objekt mit dem aktuellen ValueTask-Objekt identisch ist.Determines whether the specified ValueTask object is equal to the current ValueTask object.

FromCanceled(CancellationToken)

Erstellt eine durch Abbruch abgeschlossene ValueTask mit dem angegebenen Abbruchtoken.Creates a ValueTask that has completed due to cancellation with the specified cancellation token.

FromCanceled<TResult>(CancellationToken)

Erstellt eine durch Abbruch abgeschlossene ValueTask<TResult> mit dem angegebenen Abbruchtoken.Creates a ValueTask<TResult> that has completed due to cancellation with the specified cancellation token.

FromException(Exception)

Erstellt eine durch die angegebene Ausnahme abgeschlossene ValueTask.Creates a ValueTask that has completed with the specified exception.

FromException<TResult>(Exception)

Erstellt eine durch die angegebene Ausnahme abgeschlossene ValueTask<TResult>.Creates a ValueTask<TResult> that has completed with the specified exception.

FromResult<TResult>(TResult)

Erstellt ein ValueTask<TResult>, die erfolgreich mit dem angegebenen Ergebnis abgeschlossen ist.Creates a ValueTask<TResult> that's completed successfully with the specified result.

GetAwaiter()

Erstellt ein „awaiter“-Element für diesen Wert.Creates an awaiter for this value.

GetHashCode()

Gibt den Hashcode für diese Instanz zurück.Returns the hash code for this instance.

Preserve()

Ruft einen ValueTask ab, der an einem beliebigen Zeitpunkt in der Zukunft verwendet werden kann.Gets a ValueTask that may be used at any point in the future.

Operatoren

Equality(ValueTask, ValueTask)

Überprüft zwei ValueTask-Werte auf Gleichheit.Compares two ValueTask values for equality.

Inequality(ValueTask, ValueTask)

Bestimmt, ob zwei ValueTask-Werte ungleich sind.Determines whether two ValueTask values are unequal.

Gilt für: