54

我有一些代码在 C# 中使用线程静态对象。

[ThreadStatic]
private DataContext connection 

我想知道,在这种情况下,如果我将 static 修饰符放在线程静态上下文中,我会得到什么改变?

[ThreadStatic]
private static DataContext connection 

第一个是否每个线程每个实例都有一个上下文副本,而另一个每个线程只有一个副本?

4

3 回答 3

58

正如文档指出的那样ThreadStaticAttribute它仅设计用于静态变量。如果你在实例变量上使用它,我怀疑它不会做任何事情。

于 2009-05-15T13:00:44.567 回答
9

在第一种情况下,它可能会被忽略,而在第二种情况下,您是正确的,每个线程一个实例。

于 2009-05-15T12:59:40.560 回答
6

在 Microsoft Docs 中,它说

表示静态字段的值对于每个线程都是唯一的。

所以我猜你的第一个案例是不正确的。该属性可能会被忽略。

于 2009-05-15T13:04:59.957 回答