ValueTask 構造体
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
非同期操作の待機可能な結果が提供されます。
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、待機するか、 を使用して AsTaskにTask変換できます。 インスタンスは ValueTask 1 回だけ待機でき、コンシューマーはインスタンスが完了するまでを呼び出 GetAwaiter() さない場合があります。 これらの制限が許容できない場合は、 を 呼び出AsTaskして を ValueTaskTask に変換します。
インスタンスに対して次の操作を ValueTask 実行しないでください。
- インスタンスを複数回待機しています。
- 複数回の呼び出し AsTask 。
- これらの手法の 1 つ以上を使用してインスタンスを使用する。
上記のいずれかを実行すると、結果は未定義になります。
は ValueTask 、 または インスタンスを Task ラップできる構造体です IValueTaskSource 。 非同期メソッドからインスタンスをValueTaskIValueTaskSourceラップする を返すことで、高スループットアプリケーションは再利用可能なオブジェクトのプールを使用して割り当てを回避できますIValueTaskSource。 詳細については、「 ValueTask の理由、内容、およびタイミングについて」を参照してください。
ではなく Task をValueTask使用すると、オーバーヘッドが発生します。 は複数のフィールドを持つ構造体であるため ValueTask 、 メソッドからそれを返すと、単一 Task の参照を返すのと比較して、より多くのデータがコピーされます。 そのため、結果を返さない非同期メソッドの既定の選択肢は、 Taskを返す必要があります。 パフォーマンス分析で それが価値があると証明された場合にのみ、 ではなく TaskをValueTask使用する必要があります。 プロパティは 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() | |
| ConfigureAwait(Boolean) |
この値の awaiter を構成します。 |
| Equals(Object) |
指定したオブジェクトが現在の ValueTask インスタンスと等しいかどうかを判断します。 |
| Equals(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 値が等しくないかどうかを判断します。 |