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
实现

注解

ValueTask实例可以等待或转换为 Task using AsTaskValueTask实例只能等待一次,并且使用者在实例完成之前可能无法调用GetAwaiter()。 如果这些限制是不能接受的,请通过调用AsTask转换为 ValueTask Task a。

不应对 ValueTask 实例执行以下操作:

  • 多次等待实例。
  • 多次调用 AsTask
  • 使用其中多个技术来使用实例。

如果执行上述任一操作,则结果未定义。

A ValueTask 是一个结构,可以包装一个 Task 或一个 IValueTaskSource 实例。 返回从异步方法包装IValueTaskSource实例的一个ValueTask实例可使高吞吐量应用程序避免使用可重用IValueTaskSource对象的池进行分配。 有关详细信息,请参阅 了解 ValueTask 的原因、内容和时间

使用而不是ValueTaskTask引入一些开销。 由于 ValueTask 是具有多个字段的结构,因此从方法返回它会导致复制更多数据,而返回单个 Task 引用。 因此,不返回结果的任何异步方法的默认选择应该是返回结果 Task。 仅当性能分析证明它值得 ValueTask 使用而不是使用 Task时。 当 Task.CompletedTask 方法同步且成功返回 Task 时,该属性应用于回退成功完成的单一实例。

备注

ValueTask C# 7.0 开始,该类型的使用不受任何版本的Visual Basic支持。

备注

使用无参数构造函数 default(ValueTask) 或语法创建的实例 (零初始化的结构) 表示同步、成功完成的操作。

构造函数

ValueTask(IValueTaskSource, Int16)

使用提供的表示操作的 IValueTaskSource 对象初始化 ValueTask 类的新实例。

ValueTask(Task)

使用提供的表示操作的任务初始化 ValueTask 类的新实例。

属性

CompletedTask

获取一个已成功完成的任务。

IsCanceled

获取指示此对象是否表示取消的操作的值。

IsCompleted

获取指示此对象是否表示完成的操作的值。

IsCompletedSuccessfully

获取指示此对象是否表示成功完成的操作的值。

IsFaulted

获取指示此对象是否表示失败的操作的值。

方法

AsTask()

检索表示此 ValueTaskTask 对象。

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 值是否不相等。

适用于