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
実装

注釈

インスタンスは、 ValueTask を使用して待機するか、を使用してに変換することができ Task AsTask ます。A ValueTask instance may either be awaited or converted to a Task using AsTask. ValueTaskインスタンスを待機できるのは1回だけで、 GetAwaiter() インスタンスが完了するまでコンシューマーがを呼び出すことはできません。A 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.

インスタンスに対して次の操作を実行することはできません ValueTaskThe following operations should never be performed on a ValueTask instance:

  • インスタンスを複数回待機しています。Awaiting the instance multiple times.
  • AsTaskを複数回呼び出す。Calling AsTask multiple times.
  • インスタンスを使用するために、これらの手法の1つ以上を使用します。Using more than one of these techniques to consume the instance.

上記のいずれかを実行すると、結果は未定義になります。If you do any of the above, the results are undefined.

は、 ValueTask Task またはインスタンスのいずれかをラップできる構造体です IValueTaskSourceA 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. 詳細については、「理由、機能 、および when の 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は複数のフィールドを持つ構造体であるため、メソッドからそれを返すと、1つの参照を返す場合と比較して、より多くのデータをコピーすることになり 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 使用 Task します。Only if performance analysis proves it worthwhile should a ValueTask be used instead of a Task. Task.CompletedTaskを返すメソッドが Task 同期的かつ正常に完了した場合に、正常に完了したシングルトンを戻すには、プロパティを使用する必要があります。The 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)

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

プロパティ

CompletedTask

既に正常に完了したタスクを取得します。Gets a task that has already completed successfully.

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()

この ValueTask を表す Task オブジェクトを取得します。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.

FromCanceled(CancellationToken)

指定されたキャンセル トークンを使用したキャンセルにより完了した ValueTask を作成します。Creates a ValueTask that has completed due to cancellation with the specified cancellation token.

FromCanceled<TResult>(CancellationToken)

指定されたキャンセル トークンを使用したキャンセルにより完了した ValueTask<TResult> を作成します。Creates a ValueTask<TResult> that has completed due to cancellation with the specified cancellation token.

FromException(Exception)

指定された例外で完了した ValueTask を作成します。Creates a ValueTask that has completed with the specified exception.

FromException<TResult>(Exception)

指定された例外で完了した ValueTask<TResult> を作成します。Creates a ValueTask<TResult> that has completed with the specified exception.

FromResult<TResult>(TResult)

指定した結果で成功した ValueTask<TResult> を作成します。Creates a ValueTask<TResult> that's completed successfully with the specified result.

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)

2 つの ValueTask の値が等しいかどうかを比較します。Compares two ValueTask values for equality.

Inequality(ValueTask, ValueTask)

2 つの ValueTask 値が等しくないかどうかを判断します。Determines whether two ValueTask values are unequal.

適用対象