AsyncLazy<T>.SuppressRecursiveFactoryDetection Proprietà
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Ottiene un valore che indica se eliminare il rilevamento di una factory di valori a seconda di se stesso.
public bool SuppressRecursiveFactoryDetection { get; init; }
member this.SuppressRecursiveFactoryDetection : bool with get, set
Public Property SuppressRecursiveFactoryDetection As Boolean
Valore della proprietà
Il valore predefinito è false.
Commenti
Una factory di valori che dipende effettivamente da se stessa (ad esempio chiamando GetValueAsync() nella stessa istanza) genera un deadlock e per impostazione predefinita questa classe genererà un'eccezione se rileva tale condizione. Tuttavia, questo rilevamento si basa sul .NET ExecutionContext, che può passare a contesti di "spin off" non attesi dalla factory e quindi potrebbe attendere legalmente il risultato della factory senza deadlock.
Quando questo flusso non è corretto, può causare InvalidOperationException la creazione, ma solo quando la factory di valori non è già stata completata, causando una condizione di race condition difficile da riprodurre. Un caso di questo tipo può essere risolto chiamando SuppressRelevance() il fork non atteso in ExecutionContextoppure l'intera istanza può essere configurata per eliminare questo controllo impostando questa proprietà su true.
Quando questa proprietà è impostata su true, il controllo della factory ricorsiva non verrà eseguito, ma SuppressRelevance() verrà comunque chiamato SuppressRelevance() in se è stato fornito un JoinableTaskFactory oggetto al costruttore.