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)
синтаксиса (нулевой инициализированной структуры), представляет собой синхронно успешно завершенную операцию.
Value |
Инициализирует новый экземпляр класса ValueTask, используя указанный объект IValueTaskSource, который представляет операцию. |
Value |
Инициализирует новый экземпляр класса ValueTask, используя указанную задачу, которая представляет операцию. |
Completed |
Возвращает задачу, которая уже завершилась успешно. |
Is |
Возвращает значение, указывающее, представляет ли этот объект отмененную операцию. |
Is |
Возвращает значение, указывающее, представляет ли этот объект завершенную операцию. |
Is |
Возвращает значение, указывающее, представляет ли этот объект успешно завершенную операцию. |
Is |
Возвращает значение, указывающее, представляет ли этот объект операцию, завершившуюся ошибкой. |
As |
|
Configure |
Настраивает объект типа awaiter для этого значения. |
Equals(Object) |
Определяет, равен ли текущий экземпляр ValueTask указанному объекту. |
Equals(Value |
Определяет, равен ли заданный объект ValueTask текущему объекту ValueTask. |
From |
Создает задачу ValueTask, которая завершилась из-за отмены с использованием указанного маркера отмены. |
From |
Создает задачу ValueTask<TResult>, которая завершилась из-за отмены с использованием указанного маркера отмены. |
From |
Создает задачу ValueTask, которая завершилась из-за отмены с использованием указанного маркера отмены. |
From |
Создает задачу ValueTask<TResult>, которая завершилась из-за отмены с использованием указанного маркера отмены. |
From |
Создает ValueTask<TResult>, которая завершается удачно с указанным результатом. |
Get |
Создает объект типа awaiter для этого значения. |
Get |
Возвращает хэш-код данного экземпляра. |
Preserve() |
Получает объект ValueTask, который можно будет использовать в любой момент в будущем. |
Equality(Value |
Сравнивает два значения ValueTask на предмет их равенства. |
Inequality(Value |
Определяет неравенство двух значений ValueTask. |
Продукт | Версии |
---|---|
.NET | Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9, 10 |
.NET Standard | 2.0 (package-provided), 2.1 |
Отзыв о .NET
.NET — это проект с открытым исходным кодом. Выберите ссылку, чтобы оставить отзыв: