Udostępnij za pośrednictwem


ValueTask Struktura

Definicja

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
ValueTask
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()

Task Pobiera obiekt reprezentujący ten ValueTaskobiekt .

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.

Dotyczy