ValueTask Struktura
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
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
- 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 ValueTask
IValueTaskSource , 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é. |