AsyncLazy<T>.SuppressRecursiveFactoryDetection Propriedade
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Obtém um valor que indica se a detecção de uma fábrica de valores deve ser suprimida dependendo de si mesma.
public bool SuppressRecursiveFactoryDetection { get; init; }
member this.SuppressRecursiveFactoryDetection : bool with get, set
Public Property SuppressRecursiveFactoryDetection As Boolean
Valor da propriedade
O valor padrão é false.
Comentários
Uma fábrica de valores que realmente depende de si mesma (por exemplo, chamando GetValueAsync() a mesma instância) teria deadlock e, por padrão, essa classe gerará uma exceção se detectar tal condição. No entanto, essa detecção depende do .NET ExecutionContext, que pode fluir para contextos de "spin off" que não são aguardados pela fábrica e, portanto, pode aguardar legalmente o resultado da fábrica de valores sem deadlocking.
Quando isso flui incorretamente, ele pode causar InvalidOperationException a geração, mas somente quando a fábrica de valores ainda não foi concluída, levando a uma condição de corrida difícil de reproduzir. Esse caso pode ser resolvido chamando SuppressRelevance() a bifurcação não aguardada ou ExecutionContexttoda a instância pode ser configurada para suprimir essa verificação definindo essa propriedade como true.
Quando essa propriedade estiver definida como true, a verificação de fábrica recursiva não será executada, mas SuppressRelevance() ainda será chamada SuppressRelevance() se uma JoinableTaskFactory foi fornecida ao construtor.