ValueTask Struktura

Definice

Poskytuje očekávaný výsledek asynchronní operace.

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)
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. Instance ValueTask může být očekávána pouze jednou a příjemci nesmí volat GetAwaiter() , dokud se instance nedokončí. Pokud jsou tato omezení nepřijatelná, převeďte ValueTask na a Task voláním AsTask.

V instanci by se nikdy neměly provádět ValueTask následující operace:

  • Čeká na instanci několikrát.
  • Volání AsTask vícekrát.
  • Použití více než jedné z těchto technik ke zpracování instance.

Pokud uděláte některou z výše uvedených možností, nebudou výsledky definovány.

A ValueTask je struktura, která může zabalit instanci Task nebo IValueTaskSource instanci. Vrácení objektu ValueTaskIValueTaskSource , který zabalí instanci z asynchronní metody, umožní aplikacím s vysokou propustností vyhnout se přidělení pomocí fondu opakovaně použitelných IValueTaskSource objektů. Další informace najdete v tématu Vysvětlení důvodů, co a kdy je hodnoty ValueTask.

Použití namísto Task a ValueTask představuje určitou režii. Vzhledem k tomu ValueTask , že se jedná o strukturu s více poli, má vrácení z metody za následek zkopírování více dat v porovnání s vrácením jednoho Task odkazu. Výchozí volbou pro jakoukoli asynchronní metodu, která nevrací výsledek, by proto měla být vrácení Task. Pouze v případě, že analýza výkonu prokáže, že je vhodné ValueTask použít místo Task. Vlastnost Task.CompletedTask by měla být použita k předání úspěšně dokončené singleton v případě, že metoda vracející Task dokončení synchronně a úspěšně.

Poznámka

Použití typu ValueTask je podporováno od verze C# 7.0 a nepodporuje ho žádná verze jazyka Visual Basic.

Poznámka

Instance vytvořená pomocí konstruktoru bez parametrů nebo default(ValueTask) syntaxí (nulová inicializovaná struktura) představuje synchronně a úspěšně dokončenou operaci.

Konstruktory

ValueTask(IValueTaskSource, Int16)

Inicializuje novou instanci ValueTask třídy pomocí zadaného IValueTaskSource objektu, který představuje operaci.

ValueTask(Task)

Inicializuje novou instanci ValueTask třídy pomocí zadané úlohy, která představuje operaci.

Vlastnosti

CompletedTask

Získá úkol, který již úspěšně dokončil.

IsCanceled

Získá hodnotu, která označuje, zda tento objekt představuje zrušenou operaci.

IsCompleted

Získá hodnotu, která označuje, zda tento objekt představuje dokončenou operaci.

IsCompletedSuccessfully

Získá hodnotu, která označuje, zda tento objekt představuje úspěšně dokončenou operaci.

IsFaulted

Získá hodnotu, která označuje, zda tento objekt představuje neúspěšnou operaci.

Metody

AsTask()

Načte Task objekt, který představuje tento ValueTaskobjekt .

ConfigureAwait(Boolean)

Nakonfiguruje pro tuto hodnotu vyčkávač.

Equals(Object)

Určuje, zda je zadaný objekt roven aktuální ValueTask instanci.

Equals(ValueTask)

Určuje, zda je zadaný ValueTask objekt roven aktuálnímu ValueTask objektu.

FromCanceled(CancellationToken)

Vytvoří dokončený ValueTask kvůli zrušení se zadaným tokenem zrušení.

FromCanceled<TResult>(CancellationToken)

Vytvoří dokončený ValueTask<TResult> kvůli zrušení se zadaným tokenem zrušení.

FromException(Exception)

Vytvoří, ValueTask který byl dokončen se zadanou výjimkou.

FromException<TResult>(Exception)

Vytvoří, ValueTask<TResult> který byl dokončen se zadanou výjimkou.

FromResult<TResult>(TResult)

Vytvoří úspěšně dokončený ValueTask<TResult> se zadaným výsledkem.

GetAwaiter()

Vytvoří vyčkávač pro tuto hodnotu.

GetHashCode()

Vrátí hodnotu hash pro tuto instanci.

Preserve()

ValueTask Získá, který může být použit v libovolném okamžiku v budoucnosti.

Operátory

Equality(ValueTask, ValueTask)

Porovná dvě ValueTask hodnoty rovnosti.

Inequality(ValueTask, ValueTask)

Určuje, zda jsou dvě ValueTask hodnoty nerovné.

Platí pro