CA2019: ThreadStatic
alanlar satır içi başlatma kullanmamalıdır
Özellik | Değer |
---|---|
Kural Kimliği | CA2019 |
Başlık |
ThreadStatic alanlar satır içi başlatma kullanmamalıdır |
Kategori | Güvenilirlik |
Hataya neden olan veya bozulmayan düzeltme | Hataya neden olmayan |
.NET 9'da varsayılan olarak etkin | Öneri olarak |
Neden
ile ThreadStaticAttribute ek açıklama ekli alan satır içinde veya açıkça bir static
(Shared
Visual Basic'te) oluşturucuda başlatılır.
Kural açıklaması
ThreadStaticAttribute alanlar, satır içi başlatma ile değil, kullanımda veya açıkça bir static
(Shared
Visual Basic'te) oluşturucuda başlatılmalıdır. Oluşturucu static
yalnızca türün static
oluşturucuyu çalıştıran iş parçacığında alanı başlatır.
İhlal nasıl düzeltilir?
Bir ihlali düzeltmek için satır içi veya static
oluşturucu başlatmasını kaldırın. Bunun yerine, alanı ilk kullanımda başlatın.
Örnek
Aşağıdaki kod parçacığı CA2019 ihlalini gösterir:
class C
{
[ThreadStatic]
private static Object obj = new();
}
Class C
<ThreadStatic>
Private Shared obj As New Object()
End Class
Aşağıdaki kod parçacığı bir ihlalin nasıl düzeltileceğini gösterir:
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
Uyarıların ne zaman bastırılması gerekiyor?
Bu kuraldan gelen bir uyarıyı engellemek güvenlidir, ancak uygulamanız beklenmeyen davranışlar gösterebilir.