.NET 4.0引入了ThreadLocal<T>
类,这很棒。现在,我的app用例需要类似Java的InheritableThreadLocal
类。在.NET中有类似的东西吗?如果没有,新线程如何用来自父线程的线程初始化其线程局部变量?我想我需要使用initialization factory method,但不知道该放什么。
答案 0 :(得分:0)
我能想到的最接近的事情是使用ILogicalThreadAffinitive并使用CallContext.SetData将对象存储在线程的CallContext中。
实现ILogicalThreadAffinitive的对象将流经逻辑上下文切换,例如BeginInvoke和ThreadPool.QueueUserWorkItem。另请注意,这种方法比使用ThreadLocals比使用线程池更安全,因为你无法在线程上“绑定”一个线程局部值并让另一个线程意外地接受它。