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
можно ожидать или преобразовать в 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() | |
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. |