ValueTask Struktura
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Zapewnia oczekiwany wynik operacji asynchronicznej.
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)
- Dziedziczenie
- Implementuje
Uwagi
Wystąpienie ValueTask
może być oczekiwane lub przekonwertowane na Task wystąpienie przy użyciu polecenia AsTask. Wystąpienie ValueTask
może być oczekiwane tylko raz, a odbiorcy mogą nie wywoływać GetAwaiter() wywołań do momentu ukończenia wystąpienia. Jeśli te ograniczenia są niedopuszczalne, przekonwertuj ValueTask
element na wartość , wywołując metodę Task AsTask.
Następujące operacje nigdy nie powinny być wykonywane na wystąpieniu ValueTask
:
- Oczekiwanie na wystąpienie wiele razy.
- Wywołanie AsTask wiele razy.
- Używanie więcej niż jednej z tych technik do korzystania z wystąpienia.
Jeśli wykonasz dowolną z powyższych czynności, wyniki są niezdefiniowane.
A ValueTask
to struktura, która może opakowować Task wystąpienie lub IValueTaskSource . Zwracanie elementu ValueTask
, który opakowuje IValueTaskSource wystąpienie z metody asynchronicznej, umożliwia aplikacjom o wysokiej przepływności uniknięcie alokacji przy użyciu puli obiektów wielokrotnego użytku IValueTaskSource . Aby uzyskać więcej informacji, zobacz Understanding the Whys, Whats, and when's of ValueTask (Informacje o whys, Whats i when's of ValueTask).
Użycie elementu ValueTask
zamiast wprowadza Task pewne nakłady pracy. Ponieważ ValueTask
jest strukturą z wieloma polami, zwracanie jej z metody powoduje skopiowanie większej ilości danych w porównaniu z zwróceniem pojedynczego Task odwołania. W związku z tym domyślnym wyborem dla dowolnej metody asynchronicznej, która nie zwraca wyniku, powinna być zwrócenie wartości Task. Tylko wtedy, gdy analiza wydajności okaże się, że warto ValueTask
użyć elementu zamiast Task. Właściwość Task.CompletedTask powinna służyć do przekazania pomyślnie ukończonego pojedynczego elementu w przypadku, gdy metoda zwracająca Task element kończy się synchronicznie i pomyślnie.
Uwaga
Użycie ValueTask
typu jest obsługiwane, począwszy od języka C# 7.0 i nie jest obsługiwane przez żadną wersję języka Visual Basic.
Uwaga
Wystąpienie utworzone za pomocą konstruktora bez parametrów lub składni default(ValueTask)
(struktura zainicjowana zero) reprezentuje synchronicznie, pomyślnie ukończoną operację.
Konstruktory
ValueTask(IValueTaskSource, Int16) |
Inicjuje ValueTask nowe wystąpienie klasy przy użyciu podanego IValueTaskSource obiektu, który reprezentuje operację. |
ValueTask(Task) |
Inicjuje nowe wystąpienie ValueTask klasy przy użyciu podanego zadania, które reprezentuje operację. |
Właściwości
CompletedTask |
Pobiera zadanie, które zostało już ukończone pomyślnie. |
IsCanceled |
Pobiera wartość wskazującą, czy ten obiekt reprezentuje anulowaną operację. |
IsCompleted |
Pobiera wartość wskazującą, czy ten obiekt reprezentuje ukończoną operację. |
IsCompletedSuccessfully |
Pobiera wartość wskazującą, czy ten obiekt reprezentuje pomyślnie ukończoną operację. |
IsFaulted |
Pobiera wartość wskazującą, czy ten obiekt reprezentuje operację, która zakończyła się niepowodzeniem. |
Metody
AsTask() | |
ConfigureAwait(Boolean) |
Konfiguruje obiekt awaiter dla tej wartości. |
Equals(Object) |
Określa, czy określony obiekt jest równy bieżącemu ValueTask wystąpieniu. |
Equals(ValueTask) |
Określa, czy określony ValueTask obiekt jest równy bieżącemu ValueTask obiektowi. |
FromCanceled(CancellationToken) |
Tworzy obiekt ValueTask , który został ukończony z powodu anulowania z określonym tokenem anulowania. |
FromCanceled<TResult>(CancellationToken) |
Tworzy obiekt ValueTask<TResult> , który został ukończony z powodu anulowania z określonym tokenem anulowania. |
FromException(Exception) |
Tworzy obiekt ValueTask , który został ukończony z określonym wyjątkiem. |
FromException<TResult>(Exception) |
Tworzy obiekt ValueTask<TResult> , który został ukończony z określonym wyjątkiem. |
FromResult<TResult>(TResult) |
Tworzy obiekt, który ValueTask<TResult> został pomyślnie ukończony z określonym wynikiem. |
GetAwaiter() |
Tworzy obiekt awaiter dla tej wartości. |
GetHashCode() |
Zwraca wartość skrótu dla tego wystąpienia. |
Preserve() |
Pobiera element ValueTask , który może być używany w dowolnym momencie w przyszłości. |
Operatory
Equality(ValueTask, ValueTask) |
Porównuje dwie ValueTask wartości równości. |
Inequality(ValueTask, ValueTask) |
Określa, czy dwie ValueTask wartości są nierówne. |