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 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é. |