言語

AsyncLazy<T>.SuppressRecursiveFactoryDetection プロパティ

定義

それ自体に応じて値ファクトリの検出を抑制するかどうかを示す値を取得します。

public bool SuppressRecursiveFactoryDetection { get; init; }
member this.SuppressRecursiveFactoryDetection : bool with get, set
Public Property SuppressRecursiveFactoryDetection As Boolean

プロパティ値

既定値は false です。

注釈

(たとえば、同じインスタンスで GetValueAsync() を呼び出すことによって) 真に自身に依存する値ファクトリはデッドロックし、既定では、このクラスはそのような条件を検出した場合に例外をスローします。 ただし、この検出は、.NET ExecutionContext に依存します。このコンテキストは、ファクトリによって待機されていない "スピンオフ" コンテキストにフローできるため、デッドロックを発生させることなく、値ファクトリの結果を法的に待機できます。

これが不適切に流れると、 InvalidOperationException がスローされる可能性がありますが、値ファクトリがまだ完了していない場合にのみ、競合状態の再現が困難になります。 このようなケースは、ExecutionContextで待機していないフォークの周囲にSuppressRelevance()を呼び出すことによって解決できます。または、このプロパティを true に設定することで、インスタンス全体がこのチェックを抑制するように構成できます。

このプロパティが true に設定されている場合、再帰的ファクトリ チェックは実行されませんが、SuppressRelevance()はコンストラクターにJoinableTaskFactoryが提供された場合でもSuppressRelevance()を呼び出します。

適用対象