AsyncLazy<T>.SuppressRecursiveFactoryDetection プロパティ
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
それ自体に応じて値ファクトリの検出を抑制するかどうかを示す値を取得します。
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()を呼び出します。