Поделиться через


ValueTask Структура

Определение

Предоставляет ожидаемый результат асинхронной операции.

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)
Наследование
ValueTask
Реализации

Комментарии

Экземпляр ValueTask можно ожидать или преобразовать в Task с помощью AsTask. Экземпляр ValueTask может ожидаться только один раз, а потребители не могут вызывать до GetAwaiter() завершения экземпляра. Если эти ограничения недопустимы, преобразуйте в ValueTask , Task вызвав AsTask.

В экземпляре никогда не следует выполнять ValueTask следующие операции:

  • Ожидание экземпляра несколько раз.
  • Несколько вызовов AsTask .
  • Использование нескольких из этих методов для использования экземпляра .

При любом из описанных выше действий результаты будут неопределенными.

ValueTask это структура, которая может обертывать Task экземпляр или IValueTaskSource . Возврат объекта , ValueTask который заключает IValueTaskSource экземпляр из асинхронного метода, позволяет приложениям с высокой пропускной способностью избежать выделения, используя пул многократно используемых IValueTaskSource объектов. Дополнительные сведения см. в разделе Общие сведения о причинах, что и когда из ValueTask.

ValueTask Использование вместо вызывает некоторые Task издержки. Так как ValueTask является структурой с несколькими полями, ее возврат из метода приводит к копированию большего набора данных по сравнению с одной ссылкой Task . Таким образом, по умолчанию для любого асинхронного метода, который не возвращает результат, следует возвращать Task. Только в том случае, если анализ производительности докажет, что это целесообразно, следует ValueTask использовать вместо Task. Свойство Task.CompletedTask следует использовать для передачи успешно завершенного одноэлементного объекта в случае, когда метод, возвращающий Task , завершается синхронно и успешно.

Примечание

Использование ValueTask типа поддерживается начиная с C# 7.0 и не поддерживается ни в одной из версий Visual Basic.

Примечание

Экземпляр, созданный с помощью конструктора без параметров или с помощью default(ValueTask) синтаксиса (нулевой инициализированной структуры), представляет собой синхронно успешно завершенную операцию.

Конструкторы

ValueTask(IValueTaskSource, Int16)

Инициализирует новый экземпляр класса ValueTask, используя указанный объект IValueTaskSource, который представляет операцию.

ValueTask(Task)

Инициализирует новый экземпляр класса ValueTask, используя указанную задачу, которая представляет операцию.

Свойства

CompletedTask

Возвращает задачу, которая уже завершилась успешно.

IsCanceled

Возвращает значение, указывающее, представляет ли этот объект отмененную операцию.

IsCompleted

Возвращает значение, указывающее, представляет ли этот объект завершенную операцию.

IsCompletedSuccessfully

Возвращает значение, указывающее, представляет ли этот объект успешно завершенную операцию.

IsFaulted

Возвращает значение, указывающее, представляет ли этот объект операцию, завершившуюся ошибкой.

Методы

AsTask()

Получает объект Task, который представляет ValueTask.

ConfigureAwait(Boolean)

Настраивает объект типа awaiter для этого значения.

Equals(Object)

Определяет, равен ли текущий экземпляр ValueTask указанному объекту.

Equals(ValueTask)

Определяет, равен ли заданный объект ValueTask текущему объекту ValueTask.

FromCanceled(CancellationToken)

Создает задачу ValueTask, которая завершилась из-за отмены с использованием указанного маркера отмены.

FromCanceled<TResult>(CancellationToken)

Создает задачу ValueTask<TResult>, которая завершилась из-за отмены с использованием указанного маркера отмены.

FromException(Exception)

Создает задачу ValueTask, которая завершилась из-за отмены с использованием указанного маркера отмены.

FromException<TResult>(Exception)

Создает задачу ValueTask<TResult>, которая завершилась из-за отмены с использованием указанного маркера отмены.

FromResult<TResult>(TResult)

Создает ValueTask<TResult>, которая завершается удачно с указанным результатом.

GetAwaiter()

Создает объект типа awaiter для этого значения.

GetHashCode()

Возвращает хэш-код данного экземпляра.

Preserve()

Получает объект ValueTask, который можно будет использовать в любой момент в будущем.

Операторы

Equality(ValueTask, ValueTask)

Сравнивает два значения ValueTask на предмет их равенства.

Inequality(ValueTask, ValueTask)

Определяет неравенство двух значений ValueTask.

Применяется к