Lingua

AsyncLazy<T>.SuppressRecursiveFactoryDetection Proprietà

Definizione

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.

Si applica a