ValueTask Структура
Определение
Предоставляет ожидаемый результат асинхронной операции.Provides an awaitable result of an asynchronous operation.
public value class ValueTask : IEquatable<System::Threading::Tasks::ValueTask>
public struct ValueTask : IEquatable<System.Threading.Tasks.ValueTask>
type ValueTask = struct
Public Structure ValueTask
Implements IEquatable(Of ValueTask)
- Наследование
- Реализации
Комментарии
ValueTask
Экземпляр может быть либо ожидающим, либо преобразованным в Task using AsTask .A ValueTask
instance may either be awaited or converted to a Task using AsTask. ValueTask
Экземпляр можно ожидать только один раз, и потребители могут не вызываться GetAwaiter() до завершения экземпляра.A ValueTask
instance may only be awaited once, and consumers may not call GetAwaiter() until the instance has completed. Если эти ограничения неприемлемы, преобразуйте в в, ValueTask
Task вызвав AsTask .If these limitations are unacceptable, convert the ValueTask
to a Task by calling AsTask.
В экземпляре никогда не следует выполнять следующие операции ValueTask
:The following operations should never be performed on a ValueTask
instance:
- Ожидание экземпляра несколько раз.Awaiting the instance multiple times.
- Вызов AsTask несколько раз.Calling AsTask multiple times.
- Использование более чем одного из этих методов для использования экземпляра.Using more than one of these techniques to consume the instance.
Если вы выполните одно из указанных выше действий, результаты не будут определены.If you do any of the above, the results are undefined.
ValueTask
Представляет собой структуру, которая может заключить в оболочку Task или IValueTaskSource экземпляр.A ValueTask
is a structure that can wrap either a Task or a IValueTaskSource instance. Возврат объекта ValueTask
, который создает оболочку IValueTaskSource экземпляра из асинхронного метода, позволяет приложениям с высокой пропускной способностью избежать выделения памяти с помощью пула многократно используемых IValueTaskSource объектов.Returning a ValueTask
that wraps a IValueTaskSource instance from an asynchronous method enables high-throughput applications to avoid allocations by using a pool of reusable IValueTaskSource objects. Дополнительные сведения см. в статьях понимание причинах, что и когда имеет ValueTask.For more information, see Understanding the Whys, Whats, and Whens of ValueTask.
Использование ValueTask
вместо создает Task некоторые дополнительные издержки.Using a ValueTask
instead of a Task introduces some overhead. Поскольку ValueTask
является структурой с несколькими полями, возвращение ее из метода приводит к копированию большего количества данных по сравнению с возвратом одной Task ссылки.Because ValueTask
is a structure with multiple fields, returning it from the method results in copying more data compared to returning a single Task reference. Таким образом, по умолчанию для любого асинхронного метода, который не возвращает результат, должен возвращаться Task .As such, the default choice for any asynchronous method that does not return a result should be to return a Task. Только если анализ производительности доказывает, что следует ValueTask
использовать вместо Task .Only if performance analysis proves it worthwhile should a ValueTask
be used instead of a Task. Task.CompletedTaskСвойство следует использовать для обратного успешного завершения одноэлементного элемента в случае, когда метод, возвращающий Task Завершение, синхронно и успешно завершается.The Task.CompletedTask property should be used to hand back a successfully completed singleton in the case where a method returning a Task completes synchronously and successfully.
Примечание
Использование ValueTask
типа поддерживается начиная с C# 7,0 и не поддерживается ни одной версией Visual Basic.The use of the ValueTask
type is supported starting with C# 7.0 and is not supported by any version of Visual Basic.
Конструкторы
ValueTask(IValueTaskSource, Int16) |
Инициализирует новый экземпляр класса ValueTask, используя указанный объект IValueTaskSource, который представляет операцию.Initializes a new instance of the ValueTask class using the supplied IValueTaskSource object that represents the operation. |
ValueTask(Task) |
Инициализирует новый экземпляр класса ValueTask, используя указанную задачу, которая представляет операцию.Initializes a new instance of the ValueTask class using the supplied task that represents the operation. |
Свойства
CompletedTask |
Возвращает задачу, которая уже завершилась успешно.Gets a task that has already completed successfully. |
IsCanceled |
Возвращает значение, указывающее, представляет ли этот объект отмененную операцию.Gets a value that indicates whether this object represents a canceled operation. |
IsCompleted |
Возвращает значение, указывающее, представляет ли этот объект завершенную операцию.Gets a value that indicates whether this object represents a completed operation. |
IsCompletedSuccessfully |
Возвращает значение, указывающее, представляет ли этот объект успешно завершенную операцию.Gets a value that indicates whether this object represents a successfully completed operation. |
IsFaulted |
Возвращает значение, указывающее, представляет ли этот объект операцию, завершившуюся ошибкой.Gets a value that indicates whether this object represents a failed operation. |
Методы
AsTask() |
Получает объект Task, который представляет ValueTask.Retrieves a Task object that represents this ValueTask. |
ConfigureAwait(Boolean) |
Настраивает объект типа awaiter для этого значения.Configures an awaiter for this value. |
Equals(Object) |
Определяет, равен ли текущий экземпляр ValueTask указанному объекту.Determines whether the specified object is equal to the current ValueTask instance. |
Equals(ValueTask) |
Определяет, равен ли заданный объект ValueTask текущему объекту ValueTask.Determines whether the specified ValueTask object is equal to the current ValueTask object. |
FromCanceled(CancellationToken) |
Создает задачу ValueTask, которая завершилась из-за отмены с использованием указанного маркера отмены.Creates a ValueTask that has completed due to cancellation with the specified cancellation token. |
FromCanceled<TResult>(CancellationToken) |
Создает задачу ValueTask<TResult>, которая завершилась из-за отмены с использованием указанного маркера отмены.Creates a ValueTask<TResult> that has completed due to cancellation with the specified cancellation token. |
FromException(Exception) |
Создает задачу ValueTask, которая завершилась из-за отмены с использованием указанного маркера отмены.Creates a ValueTask that has completed with the specified exception. |
FromException<TResult>(Exception) |
Создает задачу ValueTask<TResult>, которая завершилась из-за отмены с использованием указанного маркера отмены.Creates a ValueTask<TResult> that has completed with the specified exception. |
FromResult<TResult>(TResult) |
Создает ValueTask<TResult>, которая завершается удачно с указанным результатом.Creates a ValueTask<TResult> that's completed successfully with the specified result. |
GetAwaiter() |
Создает объект типа awaiter для этого значения.Creates an awaiter for this value. |
GetHashCode() |
Возвращает хэш-код данного экземпляра.Returns the hash code for this instance. |
Preserve() |
Получает объект ValueTask, который можно будет использовать в любой момент в будущем.Gets a ValueTask that may be used at any point in the future. |
Операторы
Equality(ValueTask, ValueTask) |
Сравнивает два значения ValueTask на предмет их равенства.Compares two ValueTask values for equality. |
Inequality(ValueTask, ValueTask) |
Определяет неравенство двух значений ValueTask.Determines whether two ValueTask values are unequal. |