次の方法で共有


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、待機するか、 を使用して AsTaskTask変換できます。 インスタンスは ValueTask 1 回だけ待機でき、コンシューマーはインスタンスが完了するまでを呼び出 GetAwaiter() さない場合があります。 これらの制限が許容できない場合は、 を 呼び出AsTaskして を ValueTaskTask に変換します。

インスタンスに対して次の操作を ValueTask 実行しないでください。

  • インスタンスを複数回待機しています。
  • 複数回の呼び出し AsTask
  • これらの手法の 1 つ以上を使用してインスタンスを使用する。

上記のいずれかを実行すると、結果は未定義になります。

ValueTask 、 または インスタンスを Task ラップできる構造体です IValueTaskSource 。 非同期メソッドからインスタンスをValueTaskIValueTaskSourceラップする を返すことで、高スループットアプリケーションは再利用可能なオブジェクトのプールを使用して割り当てを回避できますIValueTaskSource。 詳細については、「 ValueTask の理由、内容、およびタイミングについて」を参照してください。

ではなく TaskValueTask使用すると、オーバーヘッドが発生します。 は複数のフィールドを持つ構造体であるため ValueTask 、 メソッドからそれを返すと、単一 Task の参照を返すのと比較して、より多くのデータがコピーされます。 そのため、結果を返さない非同期メソッドの既定の選択肢は、 Taskを返す必要があります。 パフォーマンス分析で それが価値があると証明された場合にのみ、 ではなく TaskValueTask使用する必要があります。 プロパティは Task.CompletedTask 、 を返すメソッドが同期的かつ正常に完了した場合に、正常に完了したシングルトンを Task 返すために使用する必要があります。

Note

型の ValueTask 使用は C# 7.0 以降でサポートされており、Visual Basic のどのバージョンでもサポートされていません。

Note

パラメーターなしのコンストラクターまたは構文 (ゼロ初期化構造体) によって default(ValueTask) 作成されたインスタンスは、同期的に正常に完了した操作を表します。

コンストラクター

ValueTask(IValueTaskSource, Int16)

操作を表す指定された IValueTaskSource オブジェクトを使用して、ValueTask クラスの新しいインスタンスを初期化します。

ValueTask(Task)

操作を表す指定されたタスクを使用して、ValueTask クラスの新しいインスタンスを初期化します。

プロパティ

CompletedTask

既に正常に完了したタスクを取得します。

IsCanceled

このオブジェクトが取り消された操作を表すかどうかを示す値を取得します。

IsCompleted

このオブジェクトが完了した操作を表すかどうかを示す値を取得します。

IsCompletedSuccessfully

このオブジェクトが正常に完了した操作を表すかどうかを示す値を取得します。

IsFaulted

このオブジェクトが失敗した操作を表すかどうかを示す値を取得します。

メソッド

AsTask()

この ValueTask を表す Task オブジェクトを取得します。

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)

2 つの ValueTask の値が等しいかどうかを比較します。

Inequality(ValueTask, ValueTask)

2 つの ValueTask 値が等しくないかどうかを判断します。

適用対象