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,該 ExecutionContext 可以流向工廠未等待的「衍生」上下文,因此合法地可以等待價值工廠的結果而不會導致死鎖。
當這條線流動不當時,可能會導致 InvalidOperationException 被拋棄,但前提是價值工廠尚未完成,導致難以重現的比賽狀況。 此情況可透過呼叫 SuppressRelevance() 中 ExecutionContext未等待的分叉來解決,或整個實例可設定此屬性 true為 來抑制此檢查。
當此屬性設為 true時,遞迴工廠檢查不會執行,但仍 SuppressRelevance() 會查詢 SuppressRelevance() a JoinableTaskFactory 是否提供給建構子。