私はThreadStatic
属性(https://msdn.microsoft.com/en-us/library/system.threadstaticattribute(v=vs.110).aspx)について読んできました。c#ThreadStaticAttributeの使用
私が理解する限り、スレッドごとに静的な値を保持する静的変数として機能するので、各スレッドはその静的変数に異なる値を持つ必要があります。しかし、私はそれを理解していないかもしれない。私は次のテストコードを書いた
:私が期待したもの
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++;
}
}
は唯一の「1」の出力だった - 各静的変数は別のスレッドに属しているため。私はactualy何を得る
はこのようなものです:
1
1
1
2
3
4
2
2
1
1
私はいくつかの1年代参照するだけでなく、インクリメント - ので、私は私のテスト実装のうち何かが欠けていたり、私が何かを誤解しています推測していますこの属性について
私はここで何が欠けていますか?