ValueTask ValueTask ValueTask ValueTask Struct

定義

非同期操作の待機可能な結果が提供されます。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は、を使用して待機するかTaskAsTaskを使用してに変換することができます。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.

ValueTaskインスタンスに対して次の操作を実行することはできません。The 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.

は、 TaskまたはIValueTaskSourceインスタンスのいずれかをラップできる構造体です。ValueTaskA 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を使用すると、オーバーヘッドが発生します。 TaskUsing 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.CompletedTaskTask返すメソッドが同期的かつ正常に完了した場合に、正常に完了したシングルトンを戻すには、プロパティを使用する必要があります。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(Task) ValueTask(Task) ValueTask(Task) ValueTask(Task)

操作を表す指定されたタスクを使用して、ValueTask クラスの新しいインスタンスを初期化します。Initializes a new instance of the ValueTask class using the supplied task that represents the operation.

ValueTask(IValueTaskSource, Int16) ValueTask(IValueTaskSource, Int16) ValueTask(IValueTaskSource, Int16) ValueTask(IValueTaskSource, Int16)

操作を表す指定された IValueTaskSource オブジェクトを使用して、ValueTask クラスの新しいインスタンスを初期化します。Initializes a new instance of the ValueTask class using the supplied IValueTaskSource object that represents the operation.

プロパティ

IsCanceled IsCanceled IsCanceled IsCanceled

このオブジェクトが取り消された操作を表すかどうかを示す値を取得します。Gets a value that indicates whether this object represents a canceled operation.

IsCompleted IsCompleted IsCompleted IsCompleted

このオブジェクトが完了した操作を表すかどうかを示す値を取得します。Gets a value that indicates whether this object represents a completed operation.

IsCompletedSuccessfully IsCompletedSuccessfully IsCompletedSuccessfully IsCompletedSuccessfully

このオブジェクトが正常に完了した操作を表すかどうかを示す値を取得します。Gets a value that indicates whether this object represents a successfully completed operation.

IsFaulted IsFaulted IsFaulted IsFaulted

このオブジェクトが失敗した操作を表すかどうかを示す値を取得します。Gets a value that indicates whether this object represents a failed operation.

メソッド

AsTask() AsTask() AsTask() AsTask()

この ValueTask を表す Task オブジェクトを取得します。Retrieves a Task object that represents this ValueTask.

ConfigureAwait(Boolean) ConfigureAwait(Boolean) ConfigureAwait(Boolean) ConfigureAwait(Boolean)

この値の awaiter を構成します。Configures an awaiter for this value.

Equals(Object) Equals(Object) Equals(Object) Equals(Object)

指定したオブジェクトが現在の ValueTask インスタンスと等しいかどうかを判断します。Determines whether the specified object is equal to the current ValueTask instance.

Equals(ValueTask) Equals(ValueTask) Equals(ValueTask) Equals(ValueTask)

指定した ValueTask オブジェクトが、現在の ValueTask オブジェクトと等しいかどうかを判断します。Determines whether the specified ValueTask object is equal to the current ValueTask object.

GetAwaiter() GetAwaiter() GetAwaiter() GetAwaiter()

この値の awaiter を作成します。Creates an awaiter for this value.

GetHashCode() GetHashCode() GetHashCode() GetHashCode()

このインスタンスのハッシュ コードを返します。Returns the hash code for this instance.

Preserve() Preserve() Preserve() Preserve()

将来のある時点で使用される可能性のある ValueTask を取得します。Gets a ValueTask that may be used at any point in the future.

演算子

Equality(ValueTask, ValueTask) Equality(ValueTask, ValueTask) Equality(ValueTask, ValueTask) Equality(ValueTask, ValueTask)

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

Inequality(ValueTask, ValueTask) Inequality(ValueTask, ValueTask) Inequality(ValueTask, ValueTask) Inequality(ValueTask, ValueTask)

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

適用対象