Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
CA2019:
| Property | valor |
|---|---|
| ID da regra | CA2019 |
| Título |
ThreadStatic Os campos não devem usar inicialização embutida |
| Categoria | Fiabilidade |
| A correção está quebrando ou não quebrando | Sem quebra |
| Habilitado por padrão no .NET 10 | Como sugestão |
Motivo
Um campo anotado com ThreadStaticAttribute é inicializado embutido ou explicitamente em um static construtor (Shared no Visual Basic).
Descrição da regra
ThreadStaticAttribute campos devem ser inicializados preguiçosamente no uso e não com inicialização embutida ou explicitamente em um static construtor (Shared no Visual Basic). Um static construtor apenas inicializa o campo no thread que executa o construtor do static tipo.
Como corrigir uma violação
Para corrigir uma violação, remova a inicialização embutida ou static do construtor. Em vez disso, inicialize o campo na primeira utilização.
Exemplo
O trecho de código a seguir mostra uma violação do CA2019:
class C
{
[ThreadStatic]
private static Object obj = new();
}
Class C
<ThreadStatic>
Private Shared obj As New Object()
End Class
O trecho de código a seguir mostra como corrigir uma violação:
class C
{
[ThreadStatic]
private static Object obj;
static void S1()
{
obj ??= new Object();
}
}
Class C
<ThreadStatic>
Private Shared obj
Shared Sub S1()
If obj Is Nothing Then
obj = New Object()
End If
End Sub
End Class
Quando suprimir avisos
É seguro suprimir um aviso dessa regra, mas seu aplicativo pode apresentar um comportamento inesperado.