Lazy<T>.IsValueCreated Propriedade

Definição

Obtém um valor que indica se um valor foi criado para esta Lazy<T> ocorrência.

public:
 property bool IsValueCreated { bool get(); };
public bool IsValueCreated { get; }
member this.IsValueCreated : bool
Public ReadOnly Property IsValueCreated As Boolean

Valor de Propriedade

true se foi criado um valor para esta Lazy<T> instância; caso contrário, false.

Observações

Quando ocorre uma inicialização preguiçosa para uma Lazy<T> instância, pode resultar na criação de um valor ou no lançamento de uma exceção. Se uma exceção for lançada, o comportamento subsequente da Lazy<T> instância depende de se o cache de exceções está em vigor. Se a Lazy<T> instância foi criada usando um construtor que não especifica uma função de inicialização, então a cache de exceções não está em vigor. Uma tentativa subsequente de inicializar pode Lazy<T> ter sucesso e, após a inicialização bem-sucedida, a IsValueCreated propriedade devolve true. Se a Lazy<T> instância foi criada com uma função de inicialização (especificada pelo valueFactory parâmetro do Lazy<T> construtor), então a cache de exceções é controlada pelo modo de segurança da thread.

  • Se o modo for LazyThreadSafetyMode.ExecutionAndPublication ou LazyThreadSafetyMode.None, não há segunda oportunidade para inicializar a Lazy<T> instância. Se ocorrer uma exceção e não for tratada na função de inicialização, essa exceção é armazenada em cache e relançada nos acessos subsequentes da Lazy<T>.Value propriedade. Nenhum valor é criado se uma exceção for lançada, pelo que nesses casos IsValueCreated retorna false.

  • Se o modo for LazyThreadSafetyMode.PublicationOnly, a primeira thread que consegue executar a função de inicialização (ou o construtor sem parâmetros) cria o valor para a Lazy<T> instância. Se a função de inicialização lançar uma exceção numa thread, as outras threads ainda podem tentar inicializar a Lazy<T> instância. Até que o valor seja criado, a IsValueCreated propriedade devolve false.

Aplica-se a

Ver também