webdevqa.jp.net

静的C#で変更されたThreadStatic

C#でスレッド静的オブジェクトを使用するコードがいくつかあります。

[ThreadStatic]
private DataContext connection 

この場合、静的修飾子をスレッドの静的コンテキストに配置すると、変更が加えられるとしたらどうなるでしょうか。

[ThreadStatic]
private static DataContext connection 

最初のものでは、スレッドごとにインスタンスごとにコンテキストのコピーが1つあり、他のコピーはスレッドごとに1つだけですか?

51
Anthony D

ThreadStaticAttributeは、 MSDNが指摘 のように、静的変数でのみ使用するように設計されています。インスタンス変数で使用する場合、まったく何もしないと思います。

56
Noldorin

前者の場合はおそらく無視されますが、後者の場合は正しいです。スレッドごとに1つのインスタンスです。

8
Otávio Décio

MSDNによると:

staticフィールドの値がスレッドごとに一意であることを示します。

だから私はあなたの最初のケースが間違っていると思います...属性はおそらく無視されます

6
Thomas Levesque