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
Реализации

Комментарии

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.

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