ReSharper 2025.2 Help

代码检查:[ThreadStatic] 不适用于实例字段

ThreadStaticAttribute 使字段成为线程本地的。 这意味着每个线程都有其对应于该字段的引用。 标记为 ThreadStaticAttribute 的字段必须是静态的,并且不能静态初始化。

此属性不会影响实例字段。 如果您需要线程本地的实例字段,可以使用在 .NET 4.0 中引入的 ThreadLocal<> 类型。

如果静态字段具有初始化器,则此初始化器仅在执行静态构造函数的线程上调用一次。 如果需要在所有线程上进行初始化,则可以通过延迟初始化的属性封装该字段:

[ThreadStatic] private static object myFoo; public static object Foo { get { if (myFoo == null) myFoo = new object(); return myFoo; } }
<ThreadStatic> Private Shared Dim myFoo As Object Public Shared ReadOnly Property Foo As Object Get If (myFoo Is Nothing) Then myFoo = New Object() Return myFoo End Get End Property

或者,可以使用 ThreadLocal<> 类(自 .NET 4.0 起):

private ThreadLocal<object> myFoo = new ThreadLocal<object>(() => new object());
Dim myFoo As ThreadLocal(Of Object) = new ThreadLocal(Of Object)(Function() New Object())
最后修改日期: 2025年 9月 27日