ValueTask ValueTask ValueTask ValueTask Struct

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
Implementiert

Hinweise

Eine ValueTask -Instanz kann entweder gewartet oder mithilfe AsTaskvon in Task eine konvertiert werden.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 GetAwaiter() dann aufzurufen, wenn 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 Task in einen AsTask, indem Sie aufrufen.If these limitations are unacceptable, convert the ValueTask to a Task by calling AsTask.

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

  • Mehrmals auf die Instanz warten.Awaiting the instance multiple times.
  • Mehrmals AsTask aufrufen.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 IValueTaskSource oder eine-Instanz einschließen kann.A ValueTask is a structure that can wrap either a Task or a IValueTaskSource instance. Wenn eine ValueTask -Instanz zurück IValueTaskSource gegeben wird, die eine-Instanz von einer asynchronen Methode umschließt, können Anwendungen mit hohem Durchsatz IValueTaskSource eine Zuordnung mit einem Pool wiederverwendbarer 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 ValueTask eines 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 Task eines einzelnen Verweises mehr Daten kopiert werden.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 Taskzurückgeben.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 ValueTask lohnend erweist, sollte anstelle Taskeines verwendet werden.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 Task , die zurückgibt, 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(Task) ValueTask(Task) ValueTask(Task) 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.

ValueTask(IValueTaskSource, Int16) ValueTask(IValueTaskSource, Int16) ValueTask(IValueTaskSource, Int16) 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.

Eigenschaften

IsCanceled IsCanceled IsCanceled 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 IsCompleted IsCompleted 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 IsCompletedSuccessfully IsCompletedSuccessfully 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 IsFaulted IsFaulted 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() AsTask() AsTask() AsTask()

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

ConfigureAwait(Boolean) ConfigureAwait(Boolean) ConfigureAwait(Boolean) ConfigureAwait(Boolean)

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

Equals(Object) Equals(Object) Equals(Object) 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) Equals(ValueTask) Equals(ValueTask) 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.

GetAwaiter() GetAwaiter() GetAwaiter() GetAwaiter()

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

GetHashCode() GetHashCode() GetHashCode() GetHashCode()

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

Preserve() Preserve() Preserve() 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) Equality(ValueTask, ValueTask) Equality(ValueTask, ValueTask) Equality(ValueTask, ValueTask)

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

Inequality(ValueTask, ValueTask) Inequality(ValueTask, ValueTask) Inequality(ValueTask, ValueTask) Inequality(ValueTask, ValueTask)

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

Gilt für: