ValueTask Struktura

Definice

Poskytuje očekávaný výsledek asynchronní operace.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)
Dědičnost
ValueTask
Implementuje

Poznámky

Instance ValueTask může být buď očekávána, nebo převedena na Task pomocí AsTask.A ValueTask instance may either be awaited or converted to a Task using AsTask. Instance ValueTask může být očekávána pouze jednou a příjemci nemohou volat GetAwaiter() dokud instance nebude dokončena.A ValueTask instance may only be awaited once, and consumers may not call GetAwaiter() until the instance has completed. Pokud tato omezení nesouhlasí, převeďte ValueTask na Task voláním AsTask.If these limitations are unacceptable, convert the ValueTask to a Task by calling AsTask.

U ValueTask instance by nikdy neměly být provedeny následující operace:The following operations should never be performed on a ValueTask instance:

  • Očekává se instance víckrát.Awaiting the instance multiple times.
  • Volání AsTask vícekrát.Calling AsTask multiple times.
  • Použití více než jednoho z těchto postupů ke spotřebování instance.Using more than one of these techniques to consume the instance.

Pokud provedete některou z výše uvedených výsledků, výsledky nejsou definovány.If you do any of the above, the results are undefined.

ValueTask je struktura, která může zabalit buď Task, nebo instanci IValueTaskSource.A ValueTask is a structure that can wrap either a Task or a IValueTaskSource instance. Vrácení ValueTask, který zabalí IValueTaskSource instanci z asynchronní metody, umožňuje aplikacím s vysokou propustností vyhnout se přidělování pomocí fondu opakovaně použitelných objektů IValueTaskSource.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. Další informace najdete v tématu Principy podmínkami, co a kdy je ValueTask.For more information, see Understanding the Whys, Whats, and Whens of ValueTask.

Použití ValueTask místo Task zavádí určitou režii.Using a ValueTask instead of a Task introduces some overhead. Vzhledem k tomu, že ValueTask je struktura s více poli, je vrácena z metody při kopírování většího množství dat v porovnání s vrácením jediného odkazu 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. V takovém případě výchozí volba pro jakoukoliv asynchronní metodu, která nevrací výsledek, by měla být vrácena Task.As such, the default choice for any asynchronous method that does not return a result should be to return a Task. Jenom v případě, že analýza výkonu prokáže, že by to bylo vhodné ValueTask použít místo Task.Only if performance analysis proves it worthwhile should a ValueTask be used instead of a Task. Vlastnost Task.CompletedTask by měla být použita k vrácení úspěšně dokončeného typu Singleton v případě, kdy metoda vracející Task dokončena synchronně a úspěšně.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.

Poznámka

Použití typu ValueTask je podporováno od C# 7,0 a není podporováno žádnou z verzí Visual Basic.The use of the ValueTask type is supported starting with C# 7.0 and is not supported by any version of Visual Basic.

Konstruktory

ValueTask(IValueTaskSource, Int16)

Inicializuje novou instanci třídy ValueTask pomocí zadaného IValueTaskSource objektu, který představuje operaci.Initializes a new instance of the ValueTask class using the supplied IValueTaskSource object that represents the operation.

ValueTask(Task)

Inicializuje novou instanci třídy ValueTask pomocí zadaného úkolu, který představuje operaci.Initializes a new instance of the ValueTask class using the supplied task that represents the operation.

Vlastnosti

IsCanceled

Získá hodnotu, která označuje, zda tento objekt představuje zrušenou operaci.Gets a value that indicates whether this object represents a canceled operation.

IsCompleted

Získá hodnotu, která označuje, zda tento objekt představuje dokončenou operaci.Gets a value that indicates whether this object represents a completed operation.

IsCompletedSuccessfully

Získá hodnotu, která označuje, zda tento objekt představuje úspěšně dokončenou operaci.Gets a value that indicates whether this object represents a successfully completed operation.

IsFaulted

Získá hodnotu, která označuje, zda tento objekt představuje neúspěšnou operaci.Gets a value that indicates whether this object represents a failed operation.

Metody

AsTask()

Načte objekt Task, který představuje tento ValueTask.Retrieves a Task object that represents this ValueTask.

ConfigureAwait(Boolean)

Nakonfiguruje v této hodnotě await.Configures an awaiter for this value.

Equals(Object)

Určuje, zda je zadaný objekt stejný jako aktuální instance ValueTask.Determines whether the specified object is equal to the current ValueTask instance.

Equals(ValueTask)

Určuje, zda je zadaný objekt ValueTask rovný aktuálnímu objektu ValueTask.Determines whether the specified ValueTask object is equal to the current ValueTask object.

GetAwaiter()

Vytvoří pro tuto hodnotu operátor await.Creates an awaiter for this value.

GetHashCode()

Vrátí kód hash této instance.Returns the hash code for this instance.

Preserve()

Získá ValueTask, který může být použit v jakémkoli bodě v budoucnosti.Gets a ValueTask that may be used at any point in the future.

Operátory

Equality(ValueTask, ValueTask)

Porovná dvě ValueTask hodnoty pro rovnost.Compares two ValueTask values for equality.

Inequality(ValueTask, ValueTask)

Určuje, zda jsou dvě hodnoty ValueTask nerovné.Determines whether two ValueTask values are unequal.

Platí pro