語言

AsyncLazy<T>.SuppressRecursiveFactoryDetection 屬性

定義

會根據自身情況獲得一個值,指示是否要抑制對某個價值工廠的偵測。

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

屬性值

預設值為 false。

備註

真正依賴自身的值工廠(例如 GetValueAsync() 呼叫同一實例)會死鎖,且預設此類別若偵測到此類狀況會拋出例外。 然而,這種偵測依賴於 .NET ExecutionContext,該 ExecutionContext 可以流向工廠未等待的「衍生」上下文,因此合法地可以等待價值工廠的結果而不會導致死鎖。

當這條線流動不當時,可能會導致 InvalidOperationException 被拋棄,但前提是價值工廠尚未完成,導致難以重現的比賽狀況。 此情況可透過呼叫 SuppressRelevance() 中 ExecutionContext未等待的分叉來解決,或整個實例可設定此屬性 true為 來抑制此檢查。

當此屬性設為 true時,遞迴工廠檢查不會執行,但仍 SuppressRelevance() 會查詢 SuppressRelevance() a JoinableTaskFactory 是否提供給建構子。

適用於