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 Использование вместо тогоTask, чтобы привести к некоторым издержкам. Так как ValueTask это структура с несколькими полями, возвращающая его из метода, приводит к копированию дополнительных данных по сравнению с возвратом одной Task ссылки. Таким образом, выбор по умолчанию для любого асинхронного метода, который не возвращает результат, должен быть возвращен Task. Только если анализ производительности докажет, что он стоит ValueTask использовать вместо .Task Свойство Task.CompletedTask должно использоваться для передачи успешно завершенного одноэлемента в случае, когда метод, возвращающий Task завершение синхронно и успешно.

Note

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

Note

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

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

Имя Описание
ValueTask(IValueTaskSource, Int16)

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

ValueTask(Task)

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

Свойства

Имя Описание
CompletedTask

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

IsCanceled

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

IsCompleted

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

IsCompletedSuccessfully

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

IsFaulted

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

Методы

Имя Описание
AsTask()

Извлекает Task объект, представляющий этот ValueTaskобъект.

ConfigureAwait(Boolean)

Настраивает средство ожидания для этого значения.

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

Создает средство ожидания для этого значения.

GetHashCode()

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

Preserve()

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

Операторы

Имя Описание
Equality(ValueTask, ValueTask)

Сравнивает два ValueTask значения для равенства.

Inequality(ValueTask, ValueTask)

Определяет, являются ли два ValueTask значения неравными.

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