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)
継承
実装

注釈

AValueTaskインスタンスが待機するかに変換するTaskを使用してAsTaskします。A ValueTask instance may either be awaited or converted to a Task using AsTask. AValueTaskインスタンスは 1 回、待機のみとコンシューマーは呼び出すことができませんGetAwaiter()インスタンスが完了するまでです。A ValueTask instance may only be awaited once, and consumers may not call GetAwaiter() until the instance has completed. これらの制限が許容されない場合は、変換、ValueTaskTask呼び出して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.

AValueTaskいずれかをラップできる構造体には、TaskまたはIValueTaskSourceインスタンス。A 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. 詳細については、次を参照してください。理由、何が起こって、の理解とタイミングが 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(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.

適用対象