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
待機するか、using AsTaskにTask変換できます。 インスタンスは ValueTask
1 回だけ待機でき、コンシューマーはインスタンスが完了するまで呼び出 GetAwaiter() しを行いません。 これらの制限が許容できない場合は、呼び出AsTaskして a Task に変換ValueTask
します。
インスタンスに対して次の操作を ValueTask
実行しないでください。
- インスタンスを複数回待機しています。
- 複数回呼び出します AsTask 。
- これらの手法の 1 つ以上を使用してインスタンスを使用する。
上記のいずれかを行うと、結果は未定義になります。
A ValueTask
は、インスタンスまたはインスタンスをラップ Task できる構造体です IValueTaskSource 。 ValueTask
非同期メソッドからインスタンスをIValueTaskSourceラップする値を返すことで、高スループットのアプリケーションは再利用可能なオブジェクトのプールを使用して割り当てを回避できますIValueTaskSource。 詳細については、「 ValueTask の理由、内容、およびタイミングについて」を参照してください。
代わりに a を ValueTask
使用すると、 Task いくつかのオーバーヘッドが発生します。 複数のフィールドを持つ構造体であるため 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() | |
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 値が等しくないかどうかを判断します。 |