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. ValueTaskA ValueTask instance may either be awaited or converted to a Task using AsTask. Экземпляр можно ожидать только один раз, и потребители могут не вызываться GetAwaiter() до завершения экземпляра. ValueTaskA 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.

Представляет собой структуру, которая может заключить Task в оболочку или IValueTaskSource экземпляр. ValueTaskA 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 что следует использовать вместо. TaskOnly if performance analysis proves it worthwhile should a ValueTask be used instead of a Task. Свойство следует использовать для обратного успешного завершения одноэлементного элемента в случае, когда метод, возвращающий завершение, Task синхронно и успешно завершается. Task.CompletedTaskThe 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.

Свойства

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.

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.

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