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

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

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

Pokud provedete některý z výše uvedených kroků, výsledky nebudou definovány.

A ValueTask je struktura, která může zabalit instanci Task nebo IValueTaskSource instanci. Vrácení ValueTask instance, která zabalí IValueTaskSource instanci z asynchronní metody, umožňuje aplikacím s vysokou propustností zabránit přidělení pomocí fondu opakovaně použitelných IValueTaskSource objektů. Další informace naleznete v tématu Vysvětlení důvodů, Whats a kdy valueTask.

Použití namísto ValueTaskTask zavedení některých režijních nákladů. Vzhledem k tomu ValueTask , že je struktura s více poli, vrácení z metody vede ke kopírování více dat v porovnání s vrácením jednoho Task odkazu. Jako takový, výchozí volba pro jakoukoli asynchronní metodu, která nevrací výsledek by měla vrátit Task. Pouze pokud analýza výkonu prokáže, že je ValueTask vhodné použít místo Task. Vlastnost Task.CompletedTask by se měla použít k předání úspěšně dokončeného singletonu v případě, že metoda vracející Task dokončení synchronně a úspěšně.

Note

Použití typu ValueTask je podporováno od jazyka C# 7.0 a není podporováno žádnou verzí Visual Basic.

Note

Instance vytvořená pomocí konstruktoru bez parametrů nebo default(ValueTask) syntaxe (struktura s nulovou inicializovanou strukturou) představuje synchronně a úspěšně dokončenou operaci.

Konstruktory

Name Description
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

Name Description
CompletedTask

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

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

Name Description
AsTask()

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

ConfigureAwait(Boolean)

Nakonfiguruje pro tuto hodnotu operátor awaiter.

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ří dokončenou se zadanou ValueTask výjimkou.

FromException<TResult>(Exception)

Vytvoří dokončenou se zadanou ValueTask<TResult> výjimkou.

FromResult<TResult>(TResult)

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

GetAwaiter()

Vytvoří pro tuto hodnotu awaiter.

GetHashCode()

Vrátí kód hash pro tuto instanci.

Preserve()

ValueTask Získá, který lze použít v libovolném okamžiku v budoucnu.

Operátory

Name Description
Equality(ValueTask, ValueTask)

Porovná dvě ValueTask hodnoty rovnosti.

Inequality(ValueTask, ValueTask)

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

Platí pro