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

ValueTaskInstance 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. ValueTaskInstance může být očekávána pouze jednou a příjemci mohou volat GetAwaiter() až po dokončení instance.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 na ValueTask a Task voláním AsTask .If these limitations are unacceptable, convert the ValueTask to a Task by calling AsTask.

Následující operace by nikdy neměly být provedeny u ValueTask instance: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í je AsTask více než jednou.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.

ValueTaskJe struktura, která může zabalit buď Task instanci, nebo 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 IValueTaskSource objektů.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í a ValueTask místo přináší určitou Task režii.Using a ValueTask instead of a Task introduces some overhead. Vzhledem k tomu ValueTask , že je struktura s více poli, která vrací z metody, má za následek kopírování většího množství dat v porovnání s vrácením jediného Task odkazu.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 se měla ValueTask použít místo Task .Only if performance analysis proves it worthwhile should a ValueTask be used instead of a Task. Task.CompletedTaskVlastnost by se měla použít k vrácení úspěšně dokončeného typu Singleton v případě, kdy metoda, která Task provede synchronní a úspěšně se dokončí synchronně.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í ValueTask typu je podporováno od verze C# 7,0 a není podporováno žádnou z 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.

Poznámka

Instance vytvořená s konstruktorem bez parametrů nebo default(ValueTask) syntaxí (s nulovou inicializací struktury) představuje synchronně, úspěšně dokončenou operaci.An instance created with the parameterless constructor or by the default(ValueTask) syntax (a zero-initialized structure) represents a synchronously, successfully completed operation.

Konstruktory

ValueTask(IValueTaskSource, Int16)

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

ValueTask(Task)

Inicializuje novou instanci ValueTask třídy 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

CompletedTask

Načte úkol, který již byl úspěšně dokončen.Gets a task that has already completed successfully.

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 Task objekt, který představuje toto 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í ValueTask instance.Determines whether the specified object is equal to the current ValueTask instance.

Equals(ValueTask)

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

FromCanceled(CancellationToken)

Vytvoří ValueTask , který byl dokončen z důvodu zrušení se zadaným tokenem zrušení.Creates a ValueTask that has completed due to cancellation with the specified cancellation token.

FromCanceled<TResult>(CancellationToken)

Vytvoří ValueTask<TResult> , který byl dokončen z důvodu zrušení se zadaným tokenem zrušení.Creates a ValueTask<TResult> that has completed due to cancellation with the specified cancellation token.

FromException(Exception)

Vytvoří ValueTask , který byl dokončen se zadanou výjimkou.Creates a ValueTask that has completed with the specified exception.

FromException<TResult>(Exception)

Vytvoří ValueTask<TResult> , který byl dokončen se zadanou výjimkou.Creates a ValueTask<TResult> that has completed with the specified exception.

FromResult<TResult>(TResult)

Vytvoří ValueTask<TResult> úspěšně dokončený se zadaným výsledkem.Creates a ValueTask<TResult> that's completed successfully with the specified result.

GetAwaiter()

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

GetHashCode()

Vrátí hodnotu hash pro tuto instanci.Returns the hash code for this instance.

Preserve()

Získá ValueTask , který může být použit kdykoli 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 ValueTask jsou dvě hodnoty neshodné.Determines whether two ValueTask values are unequal.

Platí pro