org.sonar.plugins.csharp.S3005.html Maven / Gradle / Ivy
Why is this an issue?
When you annotate a field with the ThreadStatic
attribute, it is an indication that the value of this field is unique for each thread. But if you don’t mark the field as static
,
then the ThreadStatic
attribute is ignored.
The ThreadStatic
attribute should either be removed or replaced with the use of ThreadLocal<T>
class, which gives a similar
behavior for non-static fields.
How to fix it
Code examples
Noncompliant code example
public class MyClass
{
[ThreadStatic] // Noncompliant
private int count = 0;
// ...
}
Compliant solution
public class MyClass
{
private int count = 0;
// ...
}
or
public class MyClass
{
private readonly ThreadLocal<int> count = new ThreadLocal<int>();
public int Count
{
get { return count.Value; }
set { count.Value = value; }
}
// ...
}
Resources
Documentation
- Microsoft Learn - ThreadStaticAttribute Class
- Microsoft Learn - ThreadLocal<T> Class
© 2015 - 2024 Weber Informatics LLC | Privacy Policy