3

.NET 4.0 引入了ThreadLocal<T>类,这很棒。现在,我的应用用例需要类似 Java 的InheritableThreadLocal类。.NET 中有类似的东西吗?如果没有,新线程如何使用父线程的本地变量初始化其线程局部变量?我想我需要使用初始化工厂方法,但不确定要放什么。

4

1 回答 1

0

我能想到的最接近的事情是使用ILogicalThreadAffinitive并使用 CallContext.SetData 将对象存储在线程的 CallContext 中。

实现 ILogicalThreadAffinitive 的对象将流经逻辑上下文切换,例如 BeginInvoke 和 ThreadPool.QueueUserWorkItem。另请注意,在您使用线程池的情况下,此方法比使用 ThreadLocals 更安全,因为您无法在线程上“绞合”线程本地值并让另一个线程意外地获取该值。

于 2011-04-24T03:36:38.147 回答