Ich habe über das ThreadStatic
Attribut (https://msdn.microsoft.com/en-us/library/system.threadstaticattribute(v=vs.110).aspx) gelesen.C# Verwendung von ThreadStaticAttribute
Soweit ich verstanden habe, handelt es sich um eine statische Variable, die einen statischen Wert pro Thread enthält. Daher sollte jeder Thread in dieser statischen Variable einen anderen Wert haben. Aber vielleicht vermisse ich es, es zu verstehen.
Ich schrieb den folgenden Testcode:
public class Program
{
public static void Main(string[] args)
{
Parallel.For(0, 10, index =>
{
MyTest test = new MyTest();
test.Increase();
Console.WriteLine(test.MyStaticVar);
});
Console.ReadLine();
}
}
public class MyTest
{
[ThreadStatic]
private static int _myStaticVar;
public int MyStaticVar => _myStaticVar;
public void Increase()
{
_myStaticVar++;
}
}
Was ich nur eine Ausgabe von „1“ zu erwarten war - da jede statische Variable zu einem anderen Thread gehört.
Was actualy ist ich so etwas wie dieses:
1
1
1
2
3
4
2
2
1
1
ich einige 1 sehen, sondern auch erhöht - so vermute ich mir fehlt in meinem Test-Implementierung etwas aus oder ich etwas Missverständnis über dieses Attribut.
Was fehlt mir hier?